Add `values()` method, and re-add constants.

This is an implementation of the changes discussed in #19.

Here you can find a short java example http://stackoverflow.com/questions/4002201/why-arent-static-methods-considered-good-oo-practice

The `parent::values` call is not a static call, it is just "call the parent method, using the current context resolution.
this means:
 * call parent, in a dynamic way,  if we are in a dynamic context
 * call parent, statically,  if we are in a static context