Add -P back to `destroy`
Create TrimToDate function

Comes with tests.

Removes one sed call
Create TrimToTTL function

Comes with tests.

This unfixes bug fix #2 in 5d1c600279f6c9878aeb1194fc72088638a4362d
but it will be refixed again in a later patch.
Create TrimToSnapshotName function

Comes with tests
Create TrimToPrefix Function

Comes with tests.

Will be used by ValidSnapshotName in a later patch
Create ValidPrefix function

Comes with tests.

Will be used in ValidSnapshotName in a later commit.
Create TrimToFileSystem function

Will be used in a later commit.
Create ValidSnapshotName function

Comes with tests.
Create TrimToPool function

Comes with tests
Create ItRetvals test-spec
Use $RETVAL rather than printf

This allows us to avoid spawning subshells all over.

In my test-scenario, these are the following, real-world numbers:

Before the introduction of Trim* functions:
    average time = 1.05s
    subshells = ~600

Post Trim* functions pre-RETVAL:
    average time = 7.5s
    subshells = ~38,000

Post RETVAL:
    average time = 0.86s
    subshells = ~400
Create FSExists function.

Comes with tests
Check if pool/fs exists when creating snapshots

Removes a grep call as well.

Two integrative tests disabled. Should be reused when we have a proper
test environment in which we can create and destroy filesystems and
snapshots.
Make Trim* functions validate rather than guess
Use "local" for variables inside of functions