Remove '_vectorisation_idx' when doing `sympy_to_str`
Change the order of operations in the substitution of names in the explicit state updater to prevent the confusion of variables in the state updater description and variables used in the equations. Closes #237
Simplify the rendering process and do not such an elaborate mechanism to figure out how many parentheses we can omit. Leads to more parentheses but no longer hangs when rendering complex expressions. Really fixes #210
Revert previous changes to the explicit state updater and use a different approach: immediately replace symbol names (e.g. `f`, `x`) by names that cannot clash with user defined names `__f`, `__x`, etc.), avoiding issues during the replacement process. Should fix #237 while avoiding unintended side effects.
Start using a specific `Proxy` class instead of `weakref.proxy` for links to other `BrianObject`s.
Don't use weak references in `get_local_namespace`
Add a short document explaining the different reference types.
Add test for pickling (not passing yet)
Do not pickle a codeobject's compiled code or namespace (should be regenerated in the next `before_run` anyway).
Use proper functions instead of lambda expressions to allow for pickling.
Regenerate sympy expressions whenever they are needed, otherwise the sympy expression might cause problems for pickling
For correct pickling of units, make sure that `quantity_with_dimensions` always creates a unit, even for dimensionless units
Include conditional-write variables into the read variables to prevent some issues in Python