Conditionally emit rest parameters

This is a sketch to omit code emission for the `...rest` parameter when it's not used in the body.

With this patch, the example in #498 will be compiled without generating code for the `...rest` parameter.

If this is the right approach, I can complete the implementation by handling the other cases in the new `isParameterReferencedInBody` method.

This is a little inaccurate because you have to consider default parameters:

```TypeScript
function f(a: number, ...rest: number[]) {
    function g(x: number = rest[0]): number {
        return a || x;
    }

    return g();
}
```

Additionally, `case`/`default` clauses should all be indented in our codebase.