Generate menu group id automatically.

In GTK+ radio menu items are managed automatically, so group id won't
have any effect there, in the meanwhile we need to maintain the same
behavior on all platforms, so we have to generate group id instead of
letting users specifying it.
Setting a radio menu item should flip other items in the group.
Add specs for radio menu items.
Radio menu items should have at least one item checked.

This is to force all platforms to match the same behavior in GTK+.
mac: Make sure menuWillShow is called when setting application menu.
Quit when get uncaughtException in specs.
Fix error when showing empty menu.
win: Update menu states when setting menu bar.
win: Force menuWillShow to be called when setting window menu.
win: Update states when setting checked property.
win: Setting enabled/visiable should also update menu.
:lipstick: Organize Menu and MenuItem's code.
Fix specs.
Merge pull request #354 from atom/automatic-group-id

Improve radio and checkbox menu items support