A lot of refactoring on Preferences, custom menus and Boards:
- Merged MapWithSubkeys into PreferencesMap.
- Added TargetBoard class.
- Simplified a bit submenu generation.
Refactored board specific options into TargetBoard
Slighty changed custom menu format: simplifies parsing
Other refinement in TargetBoard
When using cores from other packages also the referenced platforms.txt is imported
See #1157
Fixed check for referenced cores. See #1157
Unused custom menus are not showed
Simplified Boards menu layout.
Fixes #1307
"build.core" property can now be used inside custom menus.
Fixes #1304
Added message for unknown tools.
See #1304
Added auto-generation for 'build.board' value in boards.txt.
See #1305.
The "tool" for burning bootloader is now correctly selected from board
preferences.
Another update on the way burnBootloader builds its configuration.
See #1038 #1176
Changed the way ARDUINO is defined inside platform.txt
Added version field to platform.txt
Reverted to old board ids
Updated libaries and core handling.

https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5:-Library-specification
https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5---3rd-party-Hardware-specification

Merge branch 'lib-1.5-cores' into ide-1.5.x