Added support for OpenCASCADE (IGES boundary descriptors)

This PR is not intended to be final. It contains quite a big set of changes, and I'll squash most of them before merging. Before I do this, I'd like some feedback from other developers. We have some more classes that could be added to the OpenCASCADE namespace, but we'll proceed with those once this first set is completed.

If you have OpenCASCADE (www.opencascade.org) installed (either because you have SALOME, which comes with OpenCASCADE internally, or because you installed OCE, OpenCASCADE Community Edition), this PR allows you to enable it at configure time, and gives you access to NURBS based surface geometries (for the moment only interfaces to IGES files or direct interface to OpenCASCADE `TopoDS_Shape` objects are supported, but STEP and BREP formats are just a few lines of C++ away). This set of changes has been developed in collaboration with @andreamola, in the framework of project OpenSHIP (www.openship.it), and allows us to work daily with CAD files of ships and boats, like the one you see here (DTMB 5415):

![barehullzoom](https://cloud.githubusercontent.com/assets/2919756/4346143/fbd64a4a-40ef-11e4-9f04-9309fe8b4946.png)

which, using these classes, can be refined as shown in the picture (with curvature based adaptive refinement)

![initialmeshboat_6](https://cloud.githubusercontent.com/assets/2919756/4346140/eb71a064-40ef-11e4-8025-71260b032604.png)

Another example below:

![kriso_kvlcc2m](https://cloud.githubusercontent.com/assets/2919756/4346147/420abdc0-40f0-11e4-9e56-e51aba5ba670.png)

With a detailed view of the Stern refinement:

![kvlcc2m_mesh_stern](https://cloud.githubusercontent.com/assets/2919756/4346145/23ff8072-40f0-11e4-8b26-83e58125e97c.png)

For two reasons: 
 
1. I find it cleaner to write programs which use the same number of template arguments for similar objects, i.e., `HyperBall<2,3>` and `DirectionalProjectionBoundary<2,3>`

2. There is a way to port these things to dimension two in special cases, but I have not had the time yet to explore this direction... Some geometrical entities can be interpreted as lines in two (i.e., when z = 0) and OpenCASCADE supports this geometrical representation, especially to construct two dimensional curves *on* surfaces (where for `spacedim = 2` the surface would be the plane z=0), but I'm not sure if they are standard in the IGES format, so I did not port this implementation (yet). I plan to have them in `spacedim = 2` in the future...