so massive commit. But hold on before shouting about little bits. As this has been a working progress for over a week

This commit includes:
 1. fixes to get_weights,
 2. the optimisations of dsg now being executed over a thread pool (gives approx 50% inprovement in speed [on the little test case i threw at it])
 3. The fix to edge pruning so that it now actually works (logic fix and synaptic sublist lo atom to n_atoms fix)
 4. The cleaning of weight scale factor to be called in dsg and stored in subedge projections till needed at get_weights level.
 5. The massive cleanup of stdp in changing public variables into private, adding getters and setters and creating a inhirtance hirarky for being able to tell the difference between time, weight and voltae dependancies. (whats a voltage dependance by the way?) Added checks into stdpmechanism to stop us putting apples and pears in wrong order.
 6. removed row legnth of 0 from row length table and throws an error if a row length of zero is ever calcualted.
7. added a stanptic matrix report which is avilable to tell whats ine ach synaptic matrix
8. added a processor to memory address mapping report which is generated by default.
9. updated setup.py to support new strucutre of stdp dependancies.
10. changed key for processor mappings to be a tuple isntead of a string
11. added a few progress bars to stop the impression of us freezing.
12. placed a multitude of __str__ and __repr__ in a bunch of classes to make debugging much easier
13. added asserts into key sections to stop us reading in 33 bit memory addresses (not supproted in current spinnaker)