Add variable name based watches
Add variable watch test for shared breeds-own variables
Optimize for no variable watches by not looking up variable names

I saw about a 10% performance improvement. It is back to baseline performance.
Set variable watchers to null if it's empty
Comment why variable watchers doesn't use SimpleChangeEvent
Make variable watcher notification use only one hash lookup
Make variableName public. Put warning that it was added late.
Add javadocs for variable watching.

Specifies that variable names must be upper cased.
Remove variable watcher lists from the variable watcher map when they're empty.

This makes it so that the variable watcher map will be properly removed when there are no watchers.
Add test for deleting variable watchers
Merge pull request #590 from NetLogo/5.0.x-variable-watchers

Add variable watchers
add comments to SourceOwner and JobOwner
Merge remote-tracking branch 'origin/5.0.x' into headless

Conflicts:
	src/main/agent/World.java
	src/main/api/JobOwner.scala
	src/main/api/SourceOwner.scala
	src/main/org/nlogo/agent/Agent.java
	src/main/org/nlogo/agent/Observer.java