Only allow finite locations in database

Some view methods, such as update_node, would accept NaN and Infinity
values for locations. While extremely unlikely, NaN values can be
generated in the front-end through, e.g., errors while dragging
(chance personal experience, which I have been unable to intentionally
reproduce). Once in the database, NaN/Infinity values break the tracing
tool completely when their skeleton is in view, as well as many widgets.
Rather than attempt to patch every view or client action where these
non-finite values can occur, use a column constraint in PostgreSQL since
it is against the logic of the data schema to have instances with
non-finite locations.

Includes a regression test.