Cut dependency of parse on api.

* Move the following classes from api to core with no/minimal modification:
  * AgentVariables
  * 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
  * 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. Added `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`. `parse` only cares
  about color constants anyhow.
* Added marker traits `PrimitiveReporter` and `PrimitiveCommand` to core