RF: Removing is_adjacent and making new_pos and diff_pos pure, non-throwing functions.

This means that the output from diff_pos is not guaranteed to be a valid
move (which in fact was never true anyway) nor is the output from
new_pos guaranteed to be inside a maze (which has been only
coincidentally true due to the way our mazes were defined with a one px
wide border).

The only accepted way to check whether a move is valid is to ask the universe
about it.
RF: ‘get_legal_moves’ → ‘legal_moves’.
BF: Check that the BFS returned the correct move now that diff_pos doesn’t help us anymore.
ENH: No need to eagerly evaluate our generator.
RF: Removing universe references from AdjacencyList.

AdjacencyList does not try to generate its own adjacency list but takes
whatever input we present. This allows us to differentiate between
adjacency lists of all Free positions and adjacency lists of all
reachable positions from a certain starting point.
ENH: Resolve circular dependencies by moving pos functions to graph.py.
ENH: Removing NoPositionException from graph.py

This simplifies the interface of AdjacencyList. Graph functions will now always raise a NoPathException if no path can be constructed, no matter if the positions were valid or not.
Valid positions can easily be checked with `pos in adjacency_list`, so this should not be a problem in general.
UT: Test universe.reachable
DOC: Updating new_pos/diff_pos/manhattan_dist references.
RF: Updating code references to new_pos/diff_pos/manhattan_dist.
UT: Add simple test for iter_adjacencies.
BF: Typo.
DOC: Add more info regarding AdjacencyList.
Merge pull request #216 from Debilski/feature/arbitrary-neighbourhood

* feature/arbitrary-neighbourhood:
  DOC: Add more info regarding AdjacencyList.
  BF: Typo.
  UT: Add simple test for iter_adjacencies.
  RF: Updating code references to new_pos/diff_pos/manhattan_dist.
  DOC: Updating new_pos/diff_pos/manhattan_dist references.
  UT: Test universe.reachable
  ENH: Removing NoPositionException from graph.py
  ENH: Resolve circular dependencies by moving pos functions to graph.py.
  RF: Removing universe references from AdjacencyList.
  ENH: No need to eagerly evaluate our generator.
  BF: Check that the BFS returned the correct move now that diff_pos doesn’t help us anymore.
  RF: ‘get_legal_moves’ → ‘legal_moves’.
  RF: Removing is_adjacent and making new_pos and diff_pos pure, non-throwing functions.