Add asList()

This is the start of fixing #167. I've only added asList() for now, but it's very easy to add other asX implementations down the line too.

I'm going to leave it with just that now, but I'm happy to put in other PRs for more methods along these lines (perhaps asString() or asMap()), if you know which ones would be most useful.