Moving uneeded shared_ptrs to unique_ptr

A lot of the objects that were using shared_ptrs actually had a sole owner and a well-defined lifetime, so I refactored them to be held in unique_ptrs.

This makes it easier to reason about the value's lifetime, as well as ensures that destruction is deterministic and has performance benefits.

The shared pointers being used in pathfinding are removed in #150
The implementation of make_unique for arrays is not so trivial. While make_unique<T[]> is perfectly legal, make_unique<T[N]> (array of known bound) is ill-formed in C++14.
See http://stackoverflow.com/a/20313842/2557561 and http://coliru.stacked-crooked.com/a/1494be9e4ce4866c from the same author.

I still can't believe the ISO C++ committee standardized make_shared but not make_unique in C++11. IMHO unique_ptr is the most important thing that comes with C++11, but I digress. This would worth switching to C++14 just for that don't you think ? Would it be possible to pretend the project is C++11 and compile it to C++14 anyway ? Or switch to C++14 completely without hesitation ? Sorry, that's a lot of question for a pull request, we might go on with this discussion on IRC...