Add initial working version of owner_ptr
Adopt more pronouncable name
Add initial working version of weak_ptr
Remove unnecessary delete declaration
Add first example
Add initial working version of data_ptr
Add linked list example
Remove spurious <iostream> include
Return raw pointer from operator->
Delete default constructor from data_ptr
Add nullptr checks to owner_ptr
Remove needless cast operator from data_ptr
Add assertions
Use nullptr everywhere
Add const correctness
Improve code alignment
Move factory friend declaration higher up in owner_ptr def
Insert namespace std::rel_ops
Fix comparison functions

I had to remove the cast to bool operators, because in case of
comparison between pointers of non-matching types (e.g.
weak_ptr == owner_ptr) the compiler would choose bool == bool over
weak_ptr == weak_ptr. Unfortunately this forces the user to explicitly
compare with nullptr.

The std::rel_ops do not work when one of the operands needs to be
type-casted, so I had to provide manual implementations of != as well.
Add convenience cast to weak