add is_uuid?

Duplicates #26, but with different implementation, including a refactor of `parse`.

Failing spec is unrelated to this PR