Applied late static bindings to static Hal methods

This is so that classes extending Hal can create Hal objects of its own type.
Merge pull request #29 from dangerousdan/develop

Applied late static bindings to static Hal methods