some C++11-fications and technical tweaks

:exclamation: Please apply this after PR #28 :exclamation: 

There are two main changes here:

1. using `std::shared_ptr` wherever possible instead of plain C pointers to harden the code and don't have to deal with lower-level memory allocation (no need for `new` or `delete` statements).
2. transforming `Controller::LevelIter` into a real std::iterator

I'm still a little unhappy with a few things. However, the aim of these changes is to move everything closer to stdlibc++ by using `std::algorithms`, `std::iterator` and alike.
This notation (with `.operator-><...>()`) seems a little too complicated. Unfortunately, I can't think of a better way right now.
Maybe this is a good place to introduce some type traits for the Controller to introspect the concrete type of the sweeper.