Correct multiselect selecting

This was broken under a few cases, including selecting the top/left-most
row/column, and losing the selection when the cursor moved to the left
of the grid.
Refactor rrect to use real outline

The width argument to pygame.draw.rect doesn't work exactly correctly,
since it doesn't 100% fill corners.  The new outline_rect function does,
and rrect uses this.  Because of that, we can call rrect for both the
border and the cell.