Rename - Reverse iterator - New own ptr functions

--- Changes ---
1. Renamed the file to a .hpp because that just makes more sense...
2. Added reverse iterator support via std::reverse_iterator
3. Added new member functions to own pointers you send to it
push_back_own, and insert_own which just call the vector emplacement
functions. This was a decision because a push_back on pointer values
doesn't really gain us anything, emplacement is much better.
4. Removed the buggy ptr_vector(std::size_t) ctor... it doesn't really
gain us anything and if we are using abstract classes as the base type
it won't even work if we called resize

TODO
1. Possibly get rid of resize, this doesn't really do too much if we
have a polymorphic abstract class as the base type, or keep it and make
a templated version.