Rename dynamic_cast into type_conversion

Prep work for getting user defined type conversions implemented
Add ability to register a user defined type conversion

Currently this adds a fair bit of overhead. It will need to be evaluated
further before it's merged.
Add C++ test for user defined conversion
Add thread specific cache of type info

Reduces the number of locks necessary to check of a user defined type
conversion should be scanned for / applied.
Correct check for which types might have conversions
Fix broken type conversion call implementation

 - We need to properly order the function so that the one with the least
   number if type differences is the one that is tried first.
Reduce virtual calls for get_arity

Saves compiled code size and some minor runtime differences
Add type_conversion helper and failing unit test
Fix crash during user_defined_conversions_2

Temporaries created during user conversion operations were being dropped
before the result of the conversion was able to be used. This fixes that
by temporarily storing the result of the conversion inside the
current Function_Push_Pop context.
Fix compilation on gcc 4.6
Fix some warnings for clang / 64bit windows
Fix arity of functions

A value was being accessed after it was moved.
Fix 64bit msvc warning
Merge branch 'develop' of http://github.com/ChaiScript/ChaiScript into develop