Prevent hacking.py from crashing on unexpected import exception

If a module isn't importable due to an unexpected error during
__import__.  Ignore it, hacking.py is only a style checker.

Fix bug 1134622

Change-Id: I704b7cc9a7bd415018ae7634767b7bd9c3b7d9b2
Fix `with_data` handling in test-migrations.

Two issues with the existing code:

1) migrate-down wasn't respecting the `with_data` flag

2) migrate-up was not actually migrating unless `with_data` was True.
The correct behavior is to always migrate up, but only run checks when
`with_data` is set.

Change-Id: I781fa4796908bea684d4499fa9ff5e4d7a18fbd4
Don't blindly skip first migration.

The existing code would, no matter-what, skip the first migration when
running through the migrations tests. This makes the code
slightly counterintuitive (why skip the first one?), and is not very
flexible.

The reworked logic lets a migration raise a `NotImplementedError` to
signal that it doesn't support a `downgrade`. This lets the
walk-versions code treat the first-migration just like any other.

Change-Id: I19fd8ebc6075392cf9e573b8b4166291584b4a83
Merge "Fix `with_data` handling in test-migrations."
Merge "Don't blindly skip first migration."
Merge "Prevent hacking.py from crashing on unexpected import exception"
Merge remote-tracking branch 'm_src_repo/master' into build-temp