All of the changes. Doing the needful.

Some big changes with this merge. I've changed a lot of the objects and api up for good reasons, removed some bits, added some bits, etc. I'll try to summarise everything I've done:

- Post object was a bit inefficient, doing multiple soup operations rather than just once. Also the classmethods were unnecessary. Refactored.
- Removed the _get_markup method and it's associated tests. We can always re-implement this if necessary, but for now as it was broken it seems unnecessary.
- Created a basic Text object which can be used in place of a string. It has some extra methods for tokenisation.
- Began adding more complicated unittests. While adding more complicated unittests, I found errors in some older code that we thought was good.
- Updated requirements.txt
- Changed Body to body. Due to changes within our mongodb, we're now using lowercase with underscores, rather than PascalCase, so I've modified it such that the tests use body now, rather than Body. This isn't an ideal change and is a sign of poor design, but I'd rather get something working roughly before getting too bogged down in details. Eventually it would be nice to have some form of Schema so that changes to our external database don't matter to the internal coding. It's also better to use Pythonic naming, rather than PascalCase :)