Reorganisation

Sorry it's taken me so long to getting round to do this.

This is the beginning of a much needed clean up of STP's code. The reorganisation here aims to mimic the tree layout of the LLVM project.

@msoos @rgov Thoughts?