Running WordPress on a test instance, it looked like the markup wasn’t quite right.
Essentially, I just added
'container' => false, 'menu_class' => 'nav', options to the menu $args and cleaned the start_el function up a bit.
This stops an extra container div from being created before the ul and adds the nav class to that ul. The container and everything is left outside of it on purpose, because of all the customizations you may want to do with the responsive options and adding your brand logo… If this was a plugin, there would probably be a options page for handling that stuff, but it remains in loose-code form.
nav class on parent <ul>
clean up code & html
Still not crazy about the code in the start_el function