Model field values (added Boost header dependencies)

I had wanted to avoid putting templates or Boost dependencies in the
interface, but after several unpleasant attempts to model field values
using OO techniques (composition then inheritance), I decided to use a
boost::variant. The result is much cleaner and easy to understand.