Optimized rendering. Board no longer populates itself automatically.

Rendering is no longer continuous and render method is only called when
needed, this saves a lot of battery on mobile devices.
Split highlight toggling into two; add and remove. Check and checkmate implementations complete. Minor bug fix for isTileSafe method.