NetLogo/NetLogo-Headless — pull request #25 by mrerrormessage (2014-12-04 16:19:54+00:00)
Title: Remove `api` dependencies from `parse`

Opening this for a review of changes. To give a high-level look:

* Move the following classes over with no/minimal modification:
* Breed
* BreedIdentifierHandler
* CompilerException
* ErrorSource
* Fail (this may not need to live in core as it's used primarily by parse. The only other user is `compile`, but putting it in `core` seemed easiest for now)
* Femto
* File
* FileIO
* FileMode / FileModeJ
* FrontEndInterface and FrontEndProcedure
* I18N / I18NJava
* Instantiator
* Keywords
* LogoList
* Nobody
* Primitive
* Program
* StructureResults
* Made a group of changes around CompilerUtilties to avoid needing to pull `api.World` into core. I created a `LiteralImportHandler` trait, which wraps the dependencies on World, LiteralAgentParser, and ExtensionManager. There is also a `NullImportHandler` in the `parse` package that handles the case where we are not importing, and we want to error when the parser attempts to parse any import-specific stuff.
* The `parse` package only needs 6 methods on `api.ExtensionManager`, so I extracted `core.ExtensionManager` (and a corresponding `DummyExtensionManager`), and made the `api` variants implement/inherit from the `core` variants.
* Extracted ColorConstants from Color to avoid needing to pull `AgentException` and `LogoListBuilder` into `core`
* Added marker traits `PrimitiveReporter` and `PrimitiveCommand`, so I didn't have to move `api.Command` and `api.Reporter` into `core`. They pull in a soup of dependencies, and adding empty marker traits seemed like a good solution.

Work remaining to be done (some of this I may get to today, otherwise we can work on it tonight):

* Get extensions compiling against new stuff (right now, they pull from bintray directly, so I want to get whatever is going approved before pushing up).