Fix for a `list()` edge case

Hey there, I tried to use your library to do some ftp directory listing with great success using one FTP server, but came across issues with another (most probably using different different FTP server software).

Working server example output:
`drwxr-xr-x    3 33         33               4096 Feb 25  2012 directory1`

Failing server example output:
`drwxr-xr-x    3 user2 read-only               4096 Feb 25  2012 directory1`

The issue seemed to be that the regex used for recognising `user` and `group` data was only looking for `\w`, which excludes dashes, so it was failing to match the `read-only` group.

I've changed the regex to allow for that case and added a test for it. I also took the liberty of pep8'ing up a couple of files.