When the drawer is moving, calling close or open drawer are blocked

Currently when openDrawer or closeDrawer is called whilst the drawer is moving, the calls are ignored. 

This patch reverses the direction of the drawer if open/close is called whilst the drawer is moving.

The commit replaces the open / close drawer methods and creates two new global vars to keep track of the runnables.