neighbors() made faster by list comprehension
precomputing neighbors

neighbors() is no longer a bottlneck and path() is improved indirectly
Faster path() using collections.deque instead of Queue
updated Driver to reflect Board changes