Dynamic class/function/method dispatch

I've added a new ``brian2.core.dynamic`` module which has some new classes and decorator functions which allow you to dynamically change classes/functions/methods at runtime. I've used this new system to implement ``CPPStandaloneDevice`` and it simplifies things considerably, and will be even better for the future. All tests pass but @mstimberg maybe you want to take a look before we merge?

This pull request resolves #184.