Right bitwise shift mangles numbers >= 0x80000000 when using Javascript
Since Javascript's `>>` operator [is a signed right shift](http://www.ecma-international.org/ecma-262/7.0/#sec-signed-right-shift-operator), it produces different results from an unsigned/zero-filling right shift if the value to be shifted would be negative when interpreted as a signed integer (ie values >= 0x80000000). I think the fix here is to use Javscript's [*unsigned* right shift operator, `>>>`](http://www.ecma-international.org/ecma-262/7.0/#sec-unsigned-right-shift-operator).

[This MDN page](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators#Right_shift) also has an explanation of the bitshift operators that's less formal than the ECMAScript spec.

And here's a test case:
```yaml
meta:
  id: js_signed_right_shift_test
instances:
  should_be_40000000:
    value: '0x80000000 >> 1'
  should_be_a00000:
    value: '0xa0000000 >> 8'
```
It behaves as I'd expect (and as I labelled it) in python, but with the Javascript currently generated by `ksc`, the fields have values `-0x40000000` and `-0x600000` instead.