This is a great step forward, thanks!
However it isn't quite there yet, at least on my test rig.
I'm not convinced that the patch on admin is necessary, it does not tally with the examples given in
http://api.drupal.org/api/file/developer/topics/forms_api.html. The admin works wether or not I use
$item = $form_state['values']['menu'];
$item = &$form_state['values']['menu'];
same goes for function menu_edit_item_validate()
I have added some watchdog lines so I can see what is passing through function _menu_check_access() and therefore on to function _menu_per_role_access()
The odd thing is that links to ordinary nodes are not passing through at all even though they are in menu_links table and are visible as expected. I have an instance of a views module link which does work, even if I create a new link to it.
This behaviour occurs wether or not the menu_per_role module is enabled.
So in the case where function _menu_check_access() is being accessed menu_per_role works immediately.
Flushing the cache and rebuilding the menu (via the devel module) have so far had no effect.