Better handling of login / flash messages

Replace time.sleep with waits for elements to be in correct state.

Rather than waiting for flash message to have a value, retrieve the
flash message and check in an assert. This means failures do not wait
for a timeout, and should provide more informative error messages. And
there is no need to wait, as the flash message is present in downloaded HTML.

Add clicking on top menu tabs.