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)

This is a complete nitpick: Directions aren't actually points but are *differences between points* and we usually use `Tensor<1,dim>` to represent them. Also, shouldn't it be `spacedim` instead of `3`? (And make it a reference while you're at it.)