Added generic_{integer,float,string,boolean}_info_field methods.

These four member functions look exactly the same, couldn't they be 1 templated function ?

```
template <class TYPE>
TYPE Variant::generic_boolean_info_field(const TYPE& tag) const;
```