Symbolic constants

As I commented in #197, I don't think at the moment that it's worth to use symbolic constants in the generated code (e.g. `M_PI` in C++) since it doesn't offer much benefit and makes the code more complicated. I'm happy to reconsider this if we come up with a compelling use case/benefit.

In this branch I only add basic support for symbolic constants so that they are recognized correctly by sympy, for the codegen code they are transparently handled as all other `Constant` objects. From my side: ready-to-merge