Smart Pointers support (see enhancement #194)

Basic smart pointers implementation.

I also added a version of NQueens using the smart pointer support and a basic unit test (which I am not totally sure if it is done correctly).
Cool. Didn't know about that one.

One thing I forgot to mention: I am using some macros for debugging. I saw that Grappa is using a method based on LOG(x). How do I use it exactly (i.e., what do I use instead of 'x')?