Multiple changes in mirror

- Added the default implementations of several intrinsic metafunctions.
- Added implementation of the original_type and scope metafunctions.
- Updated the base_name and full_name metafunctions to support functions
  returning pointers to functions.
- Added first test cases for mirror:
  - the original_type metafunction.
  - the base_name metafunction.