Change the list type backing JsonArray/JsonObject.

Abstracted JsonArray to be a ListType<JsonValue>,
and changed JsonObject to be a ListType<string * JsonValue>.
"ListType" is set by compiler defines, and is currently an F# list
(which is different, it used to be an array). It can be changed back
to an array, but performance tests indicate that the list version is
only ~2% slower, but it much preferred because of immutability.