Refactored user_layer into separate modules

Hi Andrew,

Sorry there is a bit here to look through. When I was working with the user_layer it was making me dizzy searching through the long user_layer.py file to find the section I was looking for so I decided to split it into separate modules. In doing so I have tried to mirror the structure in the abstraction layer so that they can be more easily compared. Some parts were a little tricky as there are quite a lot of cross-references but I think it worked out quite well and it passes all the unit tests. 

I didn't plan my branching strategy that well again so there are quite a few commits relating to the ion-channel xml files I added to the catalog at the start (up until Aug 19) but they don't affect the python library at all so you shouldn't need to worry about them.

Let me know what you think.

Cheers,

Tom