Implemented aStar (untested). aStar does currently not use PriorityQueue, as it needs adjustments to work properly.
Changed Problem type to contain action types instead of action functions, to have Problem and SearchNode implement comparison by default. As a consequence of this, Problem now has Result (:: 's -> 'a -> 's) and StepCost (:: 's -> 'a -> int) fields.