RegExp function return types

Return value of String.match should have an optional index and input property, so I created an interface that adds these properties and extends `string[]`. Also `RegExpExecArray` should extend `string[]` instead of copying all the members of `Array`. Fixes #184