Namespaces

This PR is based on singleton branch #14 

Because it requires PHP 5.3 - we can switch to use namespaces