os: use coll_t:is_pg_prefix() check instead of is_pg()

The objectstore code was trying to parse out a pgid from the collection
name and using the is_pg() helper, which incorrectly tolerates a _TEMP
suffix and returns a bad value for the snapid.  The objectstore doesn't
actually care about that value, so this is harmless, but sloppy.

Introduce a simpler is_pg_prefix() helper and use that instead.

Signed-off-by: Sage Weil <sage@inktank.com>
osd: make coll_t::is_pg() correctly validate the snapid suffix

The strtoull() man page suggests resetting errno and using that to
check for a parsing error.  This ensures the OSD::load_pgs() callers are
getting what they expect (now that they aren't relying on the broken
behavior).  The other callers in the os/* code is moved to a different
method that ignores the suffix.

Signed-off-by: Sage Weil <sage@inktank.com>
os/FileStore: do not tolerate ENOENT on collection_add

If we get ENOENT on a collection_add that is a bad thing; do not ignore
the error.  This was hiding #4071 for some time.

Signed-off-by: Sage Weil <sage@inktank.com>
os/FileStore: tolerate ENOTEMPTY on RMCOLL on non-btrfs

We may have a sequence like:

 RMCOLL foo
 MKCOLL foo
 create object in foo
 <crash>

On replay, we need to tolerate the ENOTEMPTY unless/until we have a way
to do a replay guard-ish thing on the collection creation/deletion
operations.

Signed-off-by: Sage Weil <sage@inktank.com>