Remove `StochasticVariable` class (directly use `AuxiliaryVariable` instead)
Do not call get_device().code_object directly in RateMonitor and SpikeMonitor, use create_runner_codeobj instead.
Fix ratemonitor and spikemonitor templates to make the "needed_variables" argument unnecessary
Simplify ratemonitor and spikemonitor by deriving from GroupCodeRunner
Merge variables and namespace in codegen [ignoring standalone for the moment]
Remove the arrayname attribute from ArrayVariable [still ignoring standalone]
Remove the name attribute from ArrayVariable [still ignoring standalone]
Remove create_codeobject and merge its content into Device.code_object
Add an owner attribute to all variables
Add array names as template arguments and adapt the templates
Fix some issues surrounding template names and use the restrict pointers everywhere in weave code
Simplify the handling of summed variables by making a dictionary of array/pointer names available to the template
Remove the `Updater` mechanism
Introduce a new Variables object storing the variables (instead of a simple dictionary). Also adapt standalone to the new interface, the test suite should now pass for all codegen targets.
Move `variable_indices` into the `Variables` object
Use a specific `Constant` class, use `Variable` only as a super class to avoid redundancy.
Do some cleanup (e.g. delete unused imports)
Add a convenience function `add_clock_variables` to `Variables` that add the correct `Variable` objects for `t` and `dt`.
Do not notify the device about the creation of `Constant`, `AttributeVariable`, etc. It only needs to know about `ArrayVariable` and `DynamicArrayVariable`.
Start a different handling of the "implicit namespace" (now takes all frames *starting* from the calling frame into account). There's one remaining issue with warnings in `PoissonGroup`.