Throwing proper JS errors so we can get stacktraces out of them

Bleh.  I think it'd be best if we could throw something like
`NetLogoError`, so we'd know that it came from the engine and not
someplace else, but, unfortunately (and to no one's surprise), `Error`
in JavaScript is yet another ghetto hack; you can't easily extend it
with the correct semantics.

The best bet alternative seems to be to create a separate function for
creating a new `Error` and marking it as being from the engine, but then
that function shows up in the stacktrace.  To me, it's not yet apparent
that we _need_ to be able to tell if an error came from the engine, so I
think we should just punt on this for now.
Cleaning up some silliness with perspectives
Code clarity improvement
Ensuring that `clearall` clears the perspective
Code reordering
Scrubbing bubbles
Implementing `subject`
Implementing `follow` and `ride`
Renaming `watchme` => `watchMe`
Implementing `followme` and `rideme`
Fixing up `patch x y` to better handle wrapping and topologies
Ensuring that only unique patch neighbors are retrieved
Fixing minor bug in non-wrapping topologies
Implementing `__changetopology`

Woot!  This gets a ton more tests passing and caught three bugs (which I
fixed in the three previous commits).
Marking `print` as not implemented
Updating to latest version of NetLogo Headless
Why, destructively sorting, of course!
Making special agentsets dump out correctly
Minor code cleanup
Implementing link comparison like JVM NetLogo does

Initially, I scoffed at this and refused to do it, but I've finally
caved.  Yeah, it's crazy to me to sort links based on when their breed
was declared, but some tests count on this, so....