Update SNAPSHOT artifacts

This PR is a superset of #22.

Check for updates from the remote repos if `version =~ /SNAPSHOT$/`.

Would it make sense to add a new attribute (`update` or something similar) to enable this functionality?

In the event that the snapshot has been updated `ensure` returns `outdated` so we can attach listeners to this type.

Anyway, I went a little refactor-happy in the provider, I hope you don't mind.  Specs are wonderful things.

Let me know if there's anything else I can do to help get this merged in.

Thanks!