Run rules on events and introduce “variables”.

Rules are associated to events, e.g. `method::start`, `method::body`
etc. First, this is an optimisation, second, it allows further advanced
instrumentation.

Also, we have introduced “variables”, such as `class.name`,
`method.name` etc.
Add new events and support callables in rules.

New events: `class::start`, `class::end`, `method::end` and `file::end`.
Rules replacement can be a callable that produces an array. Rules can
have a callable that is executed after each fire.
Detect method stack and visibility.
Mole support $this or classname (if static).
Bind closured mole to the targeted object.
Closured mole has access to protected and private.
Update example.
Update example.
Format code. #mania