Created devices package, cpp_standalone package, CPPStandaloneCodeObject
Made CodeObject Nameable
Made find_names into a function (so you can use this to predict the name
of a Nameable before you create it)
Started work on cpp_standalone, currently using example code only
Fixed most bugs with CodeObject being Nameable (still some doctests
failing)
Merge remote-tracking branch 'origin/master' into devices2
Almost-working c++ standalone example, just need to sort out some issues
with flexible arguments for templates
Merge remote-tracking branch 'origin/codegen_improvement' into devices2

Conflicts:
	brian2/codegen/codeobject.py
	brian2/groups/group.py
	brian2/monitors/ratemonitor.py
	brian2/monitors/spikemonitor.py
Replaced some codegen hacks that didn't work with ones that did - now
C++ standalone works! At least, it compiles and runs without error.
Minor change to previous commit
Merge remote-tracking branch 'origin/master' into devices2
Merge remote-tracking branch 'origin/master' into devices2
Multiple NeuronGroup objects working in C++ standalone
Added utils.filetools module
Starting work on making C++ standalone more generic than just doing
NeuronGroup
Created Device object, route memory allocations and CodeObject through
the device
Updated setup to include devices packages
CodeObject can now extend the Jinja Environment with global functions
Missing import fixed
C++ stateupdate.cpp template uses inheritance and imports