updated readme
add .gitignore
(unchanged)
various changes, including some badly organized code

- introduced concept of initialHole and solvedHole
- implemented some position functions
- introduced the difference between a user-defined board and the form
that isSolved() can work with
- made isSolved() work when initialHole and solvedHole are different
- added and reformatted some tests
added a NOTES file explaining how to setup a board
Added a VERY simple keyboard control to the ascii demo