better handling of 3rd party hardware support via SKETCHBOOK/hardware folder

  boards, variants, cores, programmers etc can be added to the IDE
  by the user by placing then in SKETCHBOOK/hardware/<package>/<platform>
  where package is by default "arduino", but could be something else
  and platform is arch (i.e. avr, sam, etc)

  The layout of SKETCHBOOK/hardware folder should be same as that in
  <arduino-install-directory>/hardware folder.

  While this support was present, packages and platforms were HashMaps
  resulting in user-added packages or platforms with same name as the
  ones in IDE by default, to override the ones present.

  For eg,
  SKETCHBOOK/hardware/arduino/avr; will override;
  IDE-folder/hardware/arduino/avr
  resulting in user being able to access only the ones in
  SKETCHBOOK folder and lose access to the ones originally in the IDE.

  * This patch will make sure that what the user adds via his SKETCHBOOK
    folder is _in addition_ to what is already present in the IDE,
    and not remove access to any boards/programmers/cores that come
    with the IDE by default.

  * This patch also adds support for multiple board files.
    Instead of the earlier hardware/arduino/avr/boards.txt,
    now board files are in
    hardware/arduino/avr/boards/<boardname>.txt

Signed-off-by: Arnav Gupta <championswimmer@gmail.com>