Replaced a bunch of preprocessor directives with extensionmethods

That code should now be much easier to read
Added ComponentType<T> to allow for fast retrieval of components without using ComponentMappers
Adding functions to allow Entity.GetComponent<Type>() be used for retrieval of components
Added using System.Text for StringBuilder
Added IComponent<T> and fixed some errors when merging
Changed BlackBoard.GetEntry<T>() to call GetEntry()
Added EntityComponentProcessingSystem

This system automatically extracts the components needed for the system and then forwards them to a method in the overriding system
Made the constructor of Aspect public

No reason to have it hidden as protected since one can easily get a equivalent object by calling one of the factory methods with no arguments
SystemManager holds a class with 2 fields instead of using a array

This makes it a bit easier to read instead of a lot of indexing to retrive the bags of systems
Removed some duplication in SystemManager.cs
Changed SystemManager.GetSystem<T>() to return a List<T>
Added a Enumerable property to EntitySystem

This makes it easier for other classes to get the Entities from a EntitySystem without letting it modify which entities the System has.
Added CreateEntityWithIdFromTemplate

The normal CreateEntityFromTemplate method is reverted to its previous form since it is likely rare for the uniqueId to be explicitly passed in making it annoying and confusing that one needs to pass in a extra null parameter when using the method.
Added MissingTemplateException class

Used when trying to create a entity from a template which does not exist
When a system is set to the SystemManager it is now as the type from object.GetType()
Added the ability to Add components with IComponent<T>

Components implementing IComponent<T> will automatically be added as if they were of type T without having to writing AddComponent<T> explicitly
Changed ComponentPoolMultiThread.cs to use a normal pool internally

This removed about 100 lines of code duplication
Using ArgumentOutOfRangeException instead of IndexOutOfRangeException

IndexOutOfRangeException should only be used by arrays themselves
Fixing compilation on portable and windows8 targets
Using index operator instead of Get and Set methods for bag