Add value retrieval and assignment

Implement overloaded assignment operator for Property type, allowing assignment
to Value from any type in the value_type type list. Use of boost::mpl should make
this emit errors at compile time.

Implement templates getValue() member function to return copy of held value.
Will throw boost::bad_get if value cannot be cast to specified template parameter.