Fixed a NPE bug in ConstraintSolver when definitions file was empty
Updated Tile's artifact field to be a map of String-Datum.

Updated IWorldTree to reflect this.

Fixed visual bug in Tile's artifacts.

Artifacts would spill over to the tile's border due to logic bug.
We now search for contiguous spaces of length artifactLength + 1 and
start from idex + 1. This ensures that we don't stick multiple artifacts
together and also ensures that the tile's visual is left untouched.
Fixed bugs in QueryResolutionEngine
    - ValidateConstraints() was being called incorrectly. This was not
      observed unless there were multiple queries.
    - Fixed broken removal logic in validateConstraints()
    - Fixed issues with merging results of multiple queries

QueryResolutionEngine was still suffering from a few problems
    - Inability to join on either lhs or rhs
    - Result merging issues
    - IndexOutOfBounds errors in InbuiltRelations.direction()
    - Invalid results from InbuildRelations.direction()

This commit fixes several of these issues.