Support for dynamically generated forms (needed for cinder multi backend)

Read the commit message :-)

foo = ["a", "b"]
delete foo[0];

does not renumber the rest of the indexes in the JS "array", it merely removes the key from the hash. This is because Arrays are just general JS objects/hashes.

As I need the renumbering functionality, slice is the way to go. The rest of the code is just to check if we're really dealing with an Array.