PIC32 support code review

- Port the lazy block initialization scheme to the base class (DevKitModel).
- Adapt subclasses and tests to the lazy scheme.
- Generalize PIC32 fix_bootloader, implementing behavior inferred by static reverse engineering.