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

Closes #947.
@gkalpak - I agree that callback pyramids are horrible; especially promise-based pyramids. For some reason, I was mentally stuck in that approach. Your test (above) looks great.  Really nice work there. Thank you for the assist and solution.