Adding Namespace support

For PSR compatibility especially when autoloading is needed - this allows lib to work well in conjunction with other third party libs.