Small method body caching.
Small method body caching.

This change implements small body caching: identical bodies for
small methods are emitted only once.

The implementation is similar to Roslyn's implementation:
https://github.com/dotnet/roslyn/blob/91ee274439b6cbed8dbc42dccf3b737305652434/src/Compilers/Core/Portable/PEWriter/MetadataWriter.cs#L2875

Additionally, this change removes 4-byte alignment for tiny method body headers.
Only fat method body headers have to be 4-byte aligned.

SiliconStudio/Mono.Cecil,sailro/cecil,jbevain/cecil,fnajera-rac-de/cecil,mono/cecil