First version of minmax

`minmax` takes `board`, `player` (an Int) and optionally a function
`indmax` or `indmin`. Intermediate values are stored in a Dict of Dicts.

Currently the game is set up for Human vs. AI only.
Moved minmax functions to `minmax.jl`.
Corrected status code check for game end.
Renamed `minmax` to `minmax_with_cache`.
`move` now takes a tuple for the move position.
More informative variable names
min or max option passed as token
Both players can be human or computer AI
Caching now uses a (player, state) tuple

E.g. (1, :max) is stored separately to (1, :min).
Reverted `minmax_with_cache` to `minmax`.
Corrected `minmax` and simplified caching.

Using both `player` and `status` to decide on MIN or MAX was causing
problems with the algorithm. Player `1` should always be maximizing and
player `-1` should always be minimizing. This simplifies the caching,
and in addition the board state determines whose turn it is removing the
need for multiple dictionaries. The boards are now stored as strings to
avoid any potential mutibility problems.