Replace our usage our Encodable with JSTraceable

This adds the `#[jstraceable]` attribute and the `untraceable!()` macro.

`#[jstraceable]` will auto-derive on all structs/enums that contain `JSTraceable` data. `untraceable!` is a convenience macro that will tack on an empty implementation of `JSTraceable` to a type passed to it.

This also makes `Traceable`/`Untraceable` (mostly) obsolete — I'll gradually phase them out once this lands since this fix is a bit more tedious and not easily solved with `sed`.

For now, `#[jstraceable]` can't be used outside of the script crate (the path is hardcoded), but if it's necessary we can just register another attribute that can.

r? @jdm 
"call_hash"?