Fuzzy string searching

This PR adds fuzzy string matching to the station matching. In practice, it looks like the the following:

If there are multiple matches:
```
(core-dev)[davidjarvis@ziz:lirr] 00:13:57 $ python lirr.py -s pens -d hicks
Couldn't autocomplete 'pens' - did you mean one of the following?
oceanside
hempstead gardens
country life press
speonk
glen street
queens village
penn station
kew gardens
```

If there's only a single match:
```
(core-dev)[davidjarvis@ziz:lirr] 00:06:59 $ python lirr.py -s penn -d hickb
Assuming you meant to type 'hicksville' when you wrote 'hickb'
Source departure times    Destination arrival times      Trip duration in minutes
------------------------  ---------------------------  --------------------------
12:14 AM                  12:59 AM                                             45
12:45 AM                  01:08 AM                                             44
01:08 AM                  02:01 AM                                             53
01:19 AM                  02:05 AM                                             46
```

Otherwise we stick with the original behavior, e.g.:
```
(core-dev)[davidjarvis@ziz:lirr] 00:14:12 $ python lirr.py -s penn -d hicks
Source departure times    Destination arrival times      Trip duration in minutes
------------------------  ---------------------------  --------------------------
12:14 AM                  12:59 AM                                             45
12:45 AM                  01:08 AM                                             44
01:08 AM                  02:01 AM                                             53
01:19 AM                  02:05 AM                                             46
(core-dev)[davidjarvis@ziz:lirr] 00:18:10 $ python lirr.py -s pennnnnns -d hicks
Tried to find the station. Couldn't. Blaming you.
```