Added auto-deserialization of templates and pipeline processing

Hi guys, just finished adding the auto-deserialization of templates when you deserialize items. I also moved things into pipeline processing, which had the added benefit of being able to access the Db object (which was required for the auto-deserialization).

Since I had to implement the lookup by ID anyway, I've added constructors to deserialize items by ID as well.

As mentioned in the discussion for the previous pull request, the lookup by ID appears to perform pretty well. It crawls all the items, but stops when it finds the right item. It caches previously crawled items and continues if a new lookup requires so. Reading the ID from the file does not require a full deserialization; instead I just read the characters that I need (they're always at the same spot in the .item files).

Pavel mentioned that one of my commits may be a little too large. As explained, that's because I wanted to test the lookup by ID function with a huge set of data. I can remove most of it to keep everything working, but I'd like to know what you guys think; it's still a good test.

Anyway, please let me know what you think.