Updated fc::value implementation

Improved fc::value to use enum types instead of strings.
Moved code from header to cpp file
Added extra utility method to simplify syntax for generating key-value pairs for errors/logs.
Removed need to create copies when casting strings, arrays, or objects from values