some cleanup and C++11-fications + copy/move ctors
always use shared_ptr for Encapsulation objects
minor code cleanup and some assertions
always use shared_ptr for ISweeper and ITransfers
some code cleanup (line length)
made Controller::LevelIter a real iterator

at least almost. have to check a few STD internals to make it conform
with STD
don't use at() where bounds check is already done

`std::vector::at()` does an additional bounds check eventually throwing
`std::out_of_range` exception. This is useless at places where the
bounds are already checked and/or used. In such situations one should
use `std::vector::operator[]()` which is considerably faster.
controller: get_finest & get_coarsest

new handy accessor methods for the finest and coarses level hold by a
controller
Merge pull request #30 from torbjoernk/feature/shared-ptrs

some C++11-fications and technical tweaks