Fix string id crash

Still handling invalid statements, but actually fixing the issue by doing a `/[0-9]*/` constraint on all id routes. 

I also found the unknown_route response was doing a `.to_json` twice resulting a response that was a string of a json object instead of a json object. 
should we extract the regex to a constant that is shared between the link_id_constraint and the api resource options?