Added Tests/Examples for the more advanced use cases
* using custom allocation (e.g. C-style malloc)
* using placement new
* creating Objects via private ctor
* example for the 'PImpl' pattern
Note: actually all of this seems against the spirit of C++ (and OO in general). This is a do-it-yourself aproach
which adds far to much complexity (accidental, not fundamental complexity). So I checked it in for the record,
but will abandon this aproach and rely on overloading of operator new / delete if necessary (and when we really need it)