Update pyenv to sr2014.2

Main user-affecting changes:
 - Fail informatively when two Robots are created
 - Fix enumeration of multiple USB devices
 - Improve error message when queuing too many beeps.
Make the module manager load some modules on demand.

During a single request we're mainly going to be interacting with
a single module, so loading all the others is a big waste of effort.
This patch introduces the idea of 'lazy' modules (as separate from
'always' modules) that are only loaded when needed. A small number
of modules remain always loaded.

Change-Id: I07c68d5ca2e69676d72257d000e548c085acd4ac
Remove redundant checkout code.

_getLocation appears to have been unused for quite a while, and
nothing is using the export number any more (since the Java option
has been removed for a while).

Change-Id: Idf721f3e237cefb908e2538a9cc5a4d26b6efa80
Add a helper for doing a backend request with retries.

This provides a generic manner to do retry wrapped requests so that
they don't need to be implemented by each caller.

Change-Id: I58f3c125349a67563eb2306e71f0d6fb5b9c0328
Simplify options handling.

Default to an empty object, removing a chunk of null checks, and
cache the actual callback value rather than a boolean telling us
about it (since functions can be used happily in 'if's).
Don't bother to check the type of object passed, as nothing else
does, and it's not a very JavaScript thing to do.

Change-Id: I36cfb0b41c3cc6f5214809f3a112687974548ab0
Fix #2089: Clear error markers when file clean.

Complete the circle of the ErrorsPage objects setting values into
the EditPage when checks complete. Hopefully this can be done in
a better way soon via the new ErrorsModel, but this fixes it for now.

Change-Id: I95f1eeeff8d74a15012484a7234084f79217697d
Extract error checking core logic into a new model.

This moves the actual handling of the check, and the arrangement
of the results, into a separate class which doesn't have any UI
attached to it. This new class has a collection of unit tests, and
has core IDE functionality injected to allow for this.

Rework the ErrorsPage to wrap this new model, and to provide the
same functionality to external callers. The idea is that eventually
much of the Page's non-UI functionality with be removed out to the
relevant callers, or pushed down into the model as appropriate.
Callers will then interact with the model directly, and the Page
will just be a subscriber that renders the current known errors.

Change-Id: Ia52c9a0f03e37f5b263d2a8e3fc2a29db40d3f5f
Merge "Update pyenv to sr2014.2"
Update pyenv to sr2014.3

Change summary:

2d33dba Stop fw splash from showing when there's no update
3b08ae2 Remove motor and jointio firmwares
16f15b8 Dump detected USB devices to log on start-up
280013b Retry reading mcv4 fw version in case of failure