rewrite: new module system

- the whole control flow logic is done by multiboot_init now.
  it just provides a API for modules with callbacks and all kind
  of information.

  these modules don't export any functions
  and they don't need to know about each other.

- disable TRACY_TRACE_CHILDREN for Android because MotoE stock rom
  didn't boot with it and it works without it, too.

- initial 2ndstage device support.
  GRUB now passes a cmdline with the partition and path to
  the boot folder. we create boot and recovery images in this folder
  so we can fix up the problems caused by installing LK on the partitons.

- we now completely exit tracy after late init if we're not in
  multiboot recovery and just wait for our childs to exist.

- fs_mgr:
  - add support for TWRP's fstab format
  - introduce fsmgr flag 'multiboot' we only use partitions for multiboot
    from our multiboot fstab for partitions which have this flag set.
    This is needed because we need to add the recovery partition to the
    fstab for 2ndstage devices.
  - add back fs_mgr_do_mount functions

- move libs from src/lib/ to lib/

BUGS:
- TWRP doesn't show partitions if the filesystem is unknown and
  we currently replace it with "multiboot" so CWM formats it using "rm -Rf"
- updater scripts can't format partitions. This needs to be done manually
  before the installation.
- Android doesn't boot for 2ndstage devices if GRUB is installed to /data
  because the partition is in use then(for boot and recovery loop mounts)
  and vold can't mount it.

  We need to convert this mount to a bind mount in fstab.
  This requires mounting and parsing /sys because we can't resolve symlinks
  at this initstage because /dev isn't mounted yet.