Various enhancements

This PR contains the following enhancements:

**Enable binding of const variables**
Before this change, it was not possible to bind a const member variable as a variable on a class or module, it is now possible.

**Pass references by pointer instead of value**
Introduced a PasserType so that arguments can be moved around without any unnecessary copies. This is both an optimization and a correctness improvement (because some types may not have copy assignment operators).

**Make it possible to addVariables that are not copy-assignable or const**
I removed the addVariable method that has an optional setter from CppBindModule and CppBindClass conditional based on whether or not the type is copy assignable. This fixes various compilation issues I was encountering.

**Push references to variables instead of values from addVariable**
This makes it possible to expose non-copy constructable variables, and eliminates unnecessary class allocations and copies.