A number of fixes and performance improvements

This pull request includes 5 things:

1. a fix for all outstanding unittest failures
2. a number of unittest improvements, particularly for spiketrain
3. an improved fix for ticket #38
4. a fix for ticket #66
5. a general cleanup and massive performance boost for spiketrain.  

For 5, in my tests the performance improvement on a medium-sized (1000 element) spiketrain was over 2 orders of magnitude if care was taken to provide the arguments in the most efficient manner, and at least an order of magnitude in all cases  

None of the performance improvements are based on premature optimization, I used line profiler to find the performance bottlenecks and fixed only those that were having a large impact on performance.

In the IO class I am working on, spiketrain initialization is responsible for the majority of the run time (I think more than 60%), so an increase in performance in spiketrain initialization can have a large impact

All unit tests still pass, including a large number of new ones I implemented specifically to check for potential regressions due to the spiketrain changes I made.