Rework management of member variables

Now getattr is used (but only internally) to represent reading a member
variable. They were formerly stored as subscript, the current
representation is backward compatible with Python, which is always nice,
and needs no trick in the IR with metadata, which is even nicer.
Support calling numpy.shape, numpy.size and numpy.dims in addition to the attribute version

Previous implementation of member variables did not allow this, it seems
to be OK now.
Do not include exception.hpp directly when throwing a given exception

Exception translation mechanism requires the include of the specific
exception header to work correctly.