TODO
 - Ability to break external references as a pre-processing step
 - I need to properly unload all assemblies (and possibly shutdown mono runtime?) before I shut down various modules used in ScriptBansheeEngine.

C# Serialization
 - Ensure that everything still works when a serialized type is removed
 - Ensure that such components retain their field data so when they are no longer unknown their data may be restored

 ---------------------------------------

LOW PRIORITY
- Get rid of ScriptObject::createInstance and replace it with parameter in constructor
- A way to serialize any object into a Resource (and deserialize it from Resource)

 ------------------------------------------------------
 General C# component management

 Native components like Camera
  - ScriptCamera derives from Camera
    - Then whenever I check for managed Components I need to check if object type of ScriptComponent or
	  any of the built-in types. 
	   - Checking each type might be a bit slow, but normally we will be looking for an exact type
	     so hopefully this will only matter when enumerating all components which shouldn't be during performance
		 critical moments.

TODO - When reloading scripts how to handle restoring references?
TODO - When I destroy a Component, how will I refresh the inspector to let it know that something has changed
  - Can happen from C# and C++
