Made all constructors explicit to prevent unintential use of implicit
ones.
Constness all over the place!
Added pass by reference to many of the methods.