Bugfix pythonic cell construction

This does the following:

* Allows a cell name override to be passed in **args (just like c++)

This was conspicuously causing an error if you tried - the c++ api for cell construction didn't take an arg. I noticed the python test was dodging this bullet by not passing along `*args` at all. I couldn't work out how to get this to work with the c++ constructor call, but managed to work around by delaying name setting till after the `__init__`. 

* Removes the configure step from construction

This syncs it with c++ behaviour and opens up the possibility of getting it working with directed configuration (#260).

* Adds input and output tendrils to the configure step to sync with c++ api
* Bugfixes `self.__dict__.hasget` (pretty sure dict has no `hasget` method ;))

While messing around I had this getting thrown, but I think it was just hiding because it doesn't get accessed so often. Certainly not in the tests.

* Updated the python module test and made sure it is testing for naming as well.