Gk browser editing arrays

Makes it possible to 

*add or delete one or more object in a table
*create and insert one or more objects at selected rows in array
*remove one or more objects from array at selected rows
*ditto plus delete
*move one or more objects within an array by dragging

The created objects are filled with default values set in my code. Should probably check if defaults exist for the classes and use that when possible. The logic for letting the browser produce the default values is that the user might want to customise this, and the browser user might not have access to the model classes.

I know this is a big merge, but there isn't really any good way to split it into smaller merges. I will provide a  flow chart for the actions, since each interaction involves around half a dozen methods in 3 or 4 classes.
I'm not sure. There are some cases such as if you have a primary key where the user must provide a value before we can actually create a row. I think this requires a different ui design from what we have at the moment. A form ui for creation would address this, but this is very different from what we have at the moment.

In the long term we will want to store user defined default values in a metadata table so the browser can actually use them (right now they aren't even available). But for now we should only worry about finding a way to allow users to insert rows that have primary keys.