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

Closes #947.
Haven't tested it, but it could be because you haven't `flush()`'d "enough". Basically, I believe all the expects should be outside of callbacks.
(I will take a deeper look later, unless anyone beats me to it :smile:)