Fixed a warning in cpp unit tests under dodebug
Pointed the url for python doco at shake200 rather than iservo.
Added support for trace and transpose to LazyData.
Fixed bug in trace to initialise running totals.

A cleanup of some of the problems I found doing a Wall compile.
Removed some commented out lines.
Swapped some member initialisers.
Removed virtual qualifiers from some methods in FunctionSpace.
Fixed some unused or (possibly) uninitialised variables.

All about making DataEmpty instances throw.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Exposed getDim from AbstractDomain to python to fix bug.
Added isEmpty member to DataAbstract to allow it to throw is queries are
made about a DataEmpty instance.
Added exceptions to DataAbstract, DataEmpty and Data to prevent calls
being made against DataEmpty objects.
The following still work as expected on DataEmpty instances
copy, getDomain, getFunctionSpace, isEmpty, isExpanded, isProtected,
isTagged, setprotection.
You can also call interpolate, however it should throw if you try to
change FunctionSpaces.

The MPI branch is hereby closed. All future work should be in trunk.
Previously in revision 1295 I merged the latest changes to trunk into trunk-mpi-branch.
In this revision I copied all files from trunk-mpi-branch over the corresponding
trunk files. I did not use 'svn merge', it was a copy.

The set/getRefVal functions of Data objects have been removed (mainly to avoid later problems with MPI).
Moreover, a faster access to the reference id of samples has been introduced. I don't think that anybody will
profit form this at this stage but it will allow a faster dump of data objects.

escript data objects can now be saved to netCDF files, see http://www.unidata.ucar.edu/software/netcdf/.
Currently only constant data are implemented with expanded and tagged data to follow.
There are two new functions to dump a data object
s=Data(...)
s.dump(<filename>)
and to recover it
s=load(<filename>, domain)
Notice that the function space of s is recovered but domain is still need.
dump and load will replace archive and extract.
The installation needs now the netCDF installed.

I have done some clarification on functions that allow to access individual data point values in a Data object.
The term "data point number" is always local on a MPI process and referes to the value (data_point_in_sample, sample)
as a single identifyer (data_point_in_sample + sample * number_data_points_per_sample). a "global data point number"
referes to a tuple of a processour id and local data point number.
The function convertToNumArrayFromSampleNo has been removed now and convertToNumArrayFromDPNo renamed to getValueOfDataPoint.
There are two new functions:
getNumberOfDataPoints
setValueOfDataPoint
This allows you to do things like:
in=Data(..)
out=Data(..)
for i in xrange(in.getNumberOfDataPoints())
in_loc=in.getValueOfDataPoint(i)
out_loc=< some operations on in_loc>
out.setValueOfDataPoint(i,out_loc)
Also mindp is renamed to minGlobalDataPoint and there is a new function getValueOfGlobalDataPoint. While in MPI the functions getNumberOfDataPoints and getValueOfDataPoint are working locally on each process (so the code above is executed in parallel).
the latter allows getting a single value across all processors.