Move the addition of compiler options to the code comments (commit 6102144) out of the `run` method

This slowed simulations with weave down considerably, since the string formatting was done at every time step even though changes to the options were only taken into account at `CodeObject` initialisation.
Use `is not None` instead of `hasattr` to check for before/after Python code in weave

`hasattr` is relatively slow, checking with `is not None` is considerably faster.
Use a set of clocks, not a list in `Network.run`

This makes finding the next clock much faster for several objects that might all share a clock (e.g. the `defaultclock`). Some other micro-optimisations for clocks.
Merge pull request #369 from brian-team/runtime_optimisations

Runtime optimisations
Fix abs, fabs, mod, fmod
Interpret 'unix' compiler as 'gcc'
Merge remote-tracking branch 'origin/master' into support_msvc

Conflicts:
	brian2/codegen/runtime/weave_rt/weave_rt.py