Return err on failure instead of using panic.

Based recommendation from Effective Go
(http://golang.org/doc/effective_go.html#errors)
libraries should not panic but should return
an error value on failure.

Note that this changes the FromString API and thus
is not backwards compatible, thus the semantic major
version of go-semver must change. ;-)