enhance(sidenav): support promise notifications for open, close, toggle

Closes #947.
Without giving it much thought, wouldn't it make sense to call `updateIsOpen()` directly (instead of watching `isOpen`) ?