Organize Directory Structure

Organize the directory structure of each unmanaged API wrapper, because the interfaces used for Cartridge API System are increasing.
Divide The Class Representing ILGenerator From Prototype

Divide the class representing ILGenerator from the prototyping file, BaseTypeMetadataTest.cpp
Add Traits For Customized Equality Comparison And Hash Value Computation

Add traits for customized equality comparison and hash value computation.
Using the above, modify existing equality comparison utility EqualTo and hash computation utility HashTo.
Investigate the Way of Generating Identifier for Delay Evaluation

Investigate the way of generating the objects that represent an identifier to use for delay evaluation.
I groped the action against the above thing because the objects comparatively live for a long time but they are small and generated in large numbers.
The result is in Test.Urasandesu.CppAnonym.cpp, but it is like a scratched code.
Finally, I plan to merge the way of using Boost.Pool because it indicates very good performance.
Prototyping for Investigated Result

Make prototype for the investigated result since the previous commit.
The pattern of generating an identifier are as follows:
1.AssemblyName -----> TypeName ----> MethodName
  +-> Assembly        +-> Type       +-> Method
2.Assembly ---------> TypeName ----> MethodName
  +-> AssemblyName    +-> Type       +-> Method
3.Assembly ---------> Type --------> MethodName
  +-> AssemblyName    +-> TypeName   +-> Method
4.Assembly ---------> Type --------> Method
  +-> AssemblyName    +-> TypeName   +-> MethodName

I described the above patterns into Test.Urasandesu.CppAnonym.cpp.
Incidentally, they are scratched code just like previous commit :)
Fix A Wrong Filter Setting

Fix the wrong filter setting that is registered some duplicated *.hpp.
Merge Prototypes to Original Classes

Purge the prototypes that are made in Test.Urasandesu.CppAnonym.cpp, and merge to original classes.
Change the Policy to Include Header Files/Modify IL Generator with New APIs

Change the policy to include header files as follows:
1. Needs only a declaration
   => Add #include with *Fwd.* to the main code.
2. Needs a definition
   => Add #include with *.hpp/*.h to the main code.
3. Needs a definition, but temporarily
   => Add #include with *.hpp/*.h to the test code.

Modify the class, BaseILGenerator that represents IL generator with new APIs that were made by the previous commits.
Implement going through a normal case

Try to implement going through a normal case.
Add the class to represent Module

I forgot to add Module which is declared in the meta data spec...
Module is placed as the type which is between Assembly and Type in this type hierarchy.
Add the Wrapper for std::type_info

Urasandesu.CppAnonym/Urasandesu/CppAnonym/Utilities/TypeInfo.hpp is the wrapper for std::type_info.
The wrapper makes std::type_info copyable.
Implement going through a normal case

Try to implement going through a normal case.
Change Fundamental Memory Management Strategy

In current design, the pools that are chopped up finely are made in large numbers.
Therefore, we manage the all informations belonging to a scope with one of the MetadataDispensers.
Implement going through a normal case

Try to implement going through a normal case.
Add meta function prototype

In CartridgeApiSystemTest.cpp, I added a meta function class, Flatten.
Flatten is exactly what it sounds like: it flattens the designated multidimensional Sequence(Sequence is defined by Boost.MPL) with similar as SelectMany in C#.
Implement going through a normal case

Try to implement going through a normal case.
Add the features to manage hierarchical type structure and provide specialized heap

Added some utilities as follows:
* Urasandesu.CppAnonym/Urasandesu/CppAnonym/SmartPtrChainConstructor.hpp
* Urasandesu.CppAnonym/Urasandesu/CppAnonym/SmartPtrChainInfo.hpp
* Urasandesu.CppAnonym/Urasandesu/CppAnonym/SmartPtrChainMapper.hpp
  -> SmartPtrChain.* are utilities to manage hierarchical type structure more easily.
     The method Map they have enables crawling hierarchical structure efficiently because it is bound statically at compile time.
* Urasandesu.CppAnonym/Urasandesu/CppAnonym/SmartHeapProvider.hpp
  -> SmartHeapProvider provides the heap managed by AutoPtr.
* Urasandesu.CppAnonym/Urasandesu/CppAnonym/DisposableHeapProvider.hpp
  -> DisposableHeapProvider provides the heap managed by TempPtr with similar as PersistableHeapProvider.
     The difference is that DisposableHeapProvider notifies disposing to the object before it is destructed.
Add fundamental exceptions and some utilities

Add some classes as follows:
* Urasandesu.CppAnonym/Urasandesu/CppAnonym/CppAnonymInvalidOperationException.h
* Urasandesu.CppAnonym/Urasandesu/CppAnonym/CppAnonymInvalidOperationException.cpp
  -> CppAnonymInvalidOperationException represents that the usage is wrong.
     This meaning is almost same with InvalidOperationException in .NET.
* Urasandesu.CppAnonym/Urasandesu/CppAnonym/CppAnonymObjectDisposedException.h
* Urasandesu.CppAnonym/Urasandesu/CppAnonym/CppAnonymObjectDisposedException.cpp
  -> CppAnonymObjectDisposedException represents that the object has already disposed.
     This meaning is almost same with ObjectDisposedException in .NET.
* Urasandesu.CppAnonym/Urasandesu/CppAnonym/SimpleDisposable.h
* Urasandesu.CppAnonym/Urasandesu/CppAnonym/SimpleDisposable.cpp
  -> This class is tiny helper for DisposableHeapProvider.
* Urasandesu.CppAnonym/Urasandesu/CppAnonym/Utilities/NullDeleter.hpp
  -> .*Deleter is function object which has 'template<class T> void operator(T *p)' to release a heap object.
     NullDeleter is exactly what it sounds like: the deleter does nothing.
Add the features to manage hierarchical type structure

Added some utilities as follows:
* Urasandesu.CppAnonym/Urasandesu/CppAnonym/SmartPtrChain.hpp
  -> SmartPtrChain.* are utilities to manage hierarchical type structure more easily.
     The method Map they have enables crawling hierarchical structure efficiently because it is bound statically at compile time.
Implement going through a normal case

Try to implement going through a normal case.