Added the mouseovermetadata tag.
Added support for custom icons.
Refactored a big portion of ValueType.