Adding support for prerelease identifiers

This is implemented per https://github.com/npm/node-semver/issues/88
OK

I'm assuming we're just concerned about 3 argument calls differentiating what the last optional argument is. I don't think we should support switching the order of loose/identifier if you pass all four.

Valid usage:
  version, release, loose
  version, release, identifier
  version, release, loose, identifier