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).