Fixes T3515 - [,] causing slowparse to throw an error

Summary:
This fixes the bug where structured would throw an error on [,] allowing you to insta-pass any challenge with "we're having trouble checking we'll give you the benefit of the doubt".
This was a structuredjs bug because [,] is acutally valid Javascript which evaluates to [undefined]. It was an edge case we weren't prepared for though.
If you you parse [undefined] to an AST you get:

```
{
	"type": "ArrayExpression",
	"elements": [
	    {
	        "type": "Identifier",
	        "name": "undefined"
	    }
	]
}
```
Whereas if you parse [,] you get:

```
{
	"type": "ArrayExpression",
	"elements": [
              null
	]
}
```

This is the only case where it is possible to get anything other than an object in an array in the user AST, so we needed to handle it.
While I was at I fixed some annoying code snippets with equivalent, but better, code.

Test Plan:
- Add tests
- Run test suite

Reviewers: john, pamela

Reviewed By: pamela

Subscribers: #cs

Differential Revision: https://phabricator.khanacademy.org/D15175