Add support for mapping the empty interface to Variants where appropriate.

It is appropriate to convert emtpy interface to Variant in the following
situations:
  a) Standalone empty interface as dest in Store.
  b) []interface{} as dest in Store.
  c) map[T]interface{} as dest in Store.
  d) Signature "v" for empty interface type
  e) Encode of empty interface becomes encode of variant.

This commit also refactors Store to be more readable.
5 files changed