Allow keywords to depend on other fields (for example product)
Begin implementation of "custom" editable object classes.

* Separate 'class' and 'field' entities. Previous Fields were a combination of both a Field and a Class.
* Turn Component, Version, Milestone, Keywords, OS, Platform, Status and all custom select field value classes into generic classes.
  Remove most of their custom DB interaction code.
* Remove separate Milestone and Version CRUD user interfaces, edit them using generic UI.
* Allow to view history of generic objects.

TODO:
* Edit generic classes and their fields.
* Deal with possible form field name collisions.
* Search on generic objects.
* Generic autocomplete in select fields.