Some reorganisation of EscriptParams and related changes.
We now distinguish between modifiable parameters and build features.
To interrogate the latter use:
escript::hasFeature() [ python: escript.hasFeature() ]
and
escript::listFeatures() [ python: escript.listFeatures() ]
I have decided to add specific getters for the remaining few parameters to
avoid the penalty of string comparisons and to remove the wealth of friend
declarations with Data* classes.
Also made some changes in SConstruct to make sure we set *all* preprocessor
directives *before* building anything.
Still to do is dealing with checks for direct solver and gmsh. The latter needs
to be a runtime check rather than a compile time check.

More cleanup
Moving some includes around.
The plan is to rename some includes to better reflect their purpose.
Removing inheritance from std::binary_function (since that is deprecated).
Replacing some doubles with real_t.

Code path conversions.
TestDomain can now return a JMPI.
Some tests now use TestDomain (didn't want to undo all that work
from before I found the ASSERT fix).
Moving more code to new path.
Commenting out a bunch of old ops.

Adding #define for namespace on dynamic_pointer_cast<>
Also for static_pointer_cast<>
The plan is to make it easy to switch between boost::
and std:: for shared_ptr
This will be important if we start to rely on more recent
share_ptr features (guaranteed to be in c++11 not necessarily in boost)

Major rework of our exceptions. We now have specific
AssertException
NotImplementedError
ValueError
which translate to the corresponding python exception type.
I have gone through a few places and replaced things but not everywhere.

Merging from 5937 on the complex branch
Some parts of complex work but all of it is
not unit tested and it is certainly not feature
complete (I haven't put any time into dealing with
subworld for complex).
The other important aspect of this merge is that
c++11 is now required to build escript.

minval and maxval are now lazy operations (they weren't before).
Whether or not Lsup, sup and inf resolve their arguments before computing answers is controlled by the escriptParam 'RESOLVE_COLLECTIVE'.
Note: integrate() still forces a resolve.
Added some unit tests for operations which weren't tested before.
Added deepcopy implementations for lazy operations which got missed somehow.

A bunch of changes related to saveDataCSV.
[Not completed or unit tested yet]
Added saveDataCSV to util.py
AbstractDomain (and MeshAdapter) have a commonFunctionSpace method to
take a group of FunctionSpaces and return something they can all be interpolated to.
Added pointToStream() in DataTypes to help print points.
added actsConstant() to data - required because DataConstant doesn't store samples the same way other Data do.

Experimental per node cache for lazy evaluation is now available via the
LAZY_NODE_STORAGE #define
It's a bit slower and larger for small problems but a bit faster and
smaller for large (drucker prager) problems.

Misc fixes:
Added some svn:ignore properties for output files that were cluttering things up.
Lazy fixes:
Fixed shape calculations for TRACE and TRANSPOSE for rank>2.
Adjusted unit test accordingly.
As a Temporary change to DataC.cpp to test for lazy data in DataC's expanded check.
This is wrong but would only affect people using lazy data.
The proper fix will come when the numarray removal code moves over from the branch.
Made tensor product AUTOLAZY capable.
Fixed some bugs resolving tensor products (incorrect offsets in buffers).
Macro'd some stray couts.
- It appears that AUTOLAZY now passes all unit tests.
- It will not be _really_ safe for general use until I can add COW.
- (Everything's better with COW)

Added checks in C_GeneralTensorProduct (Data:: and Delayed forms) as
well as the DataAbstract Constructor to prevent Objects with Rank>4
being created.
Moved the relevant #define into systemdep.
Removed some comments.

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.

Test checkin to see if other compilers' macro preprocessors can sustain this abuse.
Added a TYPE argument to PROC_OP so that the user can optionally disambiguate the
type of the second argument. Needed for ::pow on windows.

Branch commit
More cleanup of DataTestCase - still don't have all the LazyTests in
there yet.
Added tests to make sure the resolve() operation does what it is
supposed to.
Added non-constant versions of getPointOffset to DataAbstract
classes.
Fixed a bug in deepCopy on DataLazy.
Changed setToZero to not check the type of the data.