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)

Here (and in the classes below), I find the reference to `FlatManifold` a bit confusing because the "projection" done by that class isn't actually much of a projection (and it assumes that the reader is familiar with the algorithm used there anyway). What do you think about rephrasing this as follows: "...where new points are first computed by averaging the surrounding points in the same way as FlatManifold does, and then projecting in the normal direction using OpenCASCADE utilities." 

Same for the classes below.