flyway/flyway — pull request #903 by andrewlmurray (2014-12-03 20:01:13+00:00)
Title: Fix an error where MigrationVersion wouldn't parse correctly

Presently MigrationVersion parses to a List of Longs internally. If any of the pieces of a version string overflow a long it will fail to parse with a misleading error message. This is problematic for two reasons:

1. It can be useful to have version numbers longer than longs.
2. The error message provided to the user is incorrect in the case of overflow and is confusing.

Take for example a migration with the name:

```
V20141203182115912052_00001__create_user.sql
```
(Here we're using the date/time from a shared ntp server as the prefix of a version number, which overflows a long) upon being parsed in trunk we'd get this error:

```
org.flywaydb.core.api.FlywayException: Invalid version containing non-numeric characters. Only 0..9 and . are allowed. Invalid version: 20141203182115912052.00001
```

Which is obviously incorrect.

This patch changes the internal storage of the migration version to use a BigInteger instead of a Long, thus allowing version sections to be of arbitrary length. I ran this with the non-commercial test suite and everything passed, but I haven't run with the commercial stuff.