revert back to using URI.escape, but with an additional substitution for the '/' character
b64_decode caters for deprecated tildes (that were used to replace '/'s)
Job.deserialize falls back to marshal_decode if json_decode doesn't work
Prevent malicious marshal strings being loaded
return 404 when url is malicious
Job.from_a works with symbols
Sanity check urls with functional spec