Call Board.__hash__() explicitly in outcome()

Since boards are mutable, they don't work as indices for a dictionary.  Thus,
the "outcomes" dictionary is replaced with an array indexed by boards' hash
values.
Use players' symbols instead of 'x' and 'o' in Board.__hash__()