implemented castling which completes #2, cleaned up code, changed movement arguments which completes #11, fixed broken unit tests