Rsdt/cython reops

This branch re-implements wrapper for spaces and boundary operators with boost::variant.
In practice, the static polymorphism from the c++ template are dealt with directly in c++, rather than through casting of some sort of another in cython.

The benefits are:

- safer type checking
- can deal with shared_ptr[T] and shared_ptr[const T] in same boost::variant  type. They are just different variants. So const-correctness can be maintained in the wrappers.
- simplifies the cython source code quite a bit since they require a lot less makoing
- no explicit memory management in cython

The cons are:

- slower compilation in some cases (lots of templates)
- requires extra C++ wrappers + makoing. However, it looks simpler than the previous implementation to me...

This pull request is mainly to check compilation on other platforms.