Changing Format constructor to accept a sample format code instead of bits per sample

For example, :pcm_16 instead of 16. Allows more flexibility in advance of supporting
non-PCM formats, such as floating point data. Passing in 8, 16, and 32 are still
supported, the sample format is assumed to be PCM.
Removing unnecessary parentheses
Updating Format to allow :float_32 and :float_64 as valid sample formats
Moving buffer conversion no-op checks inside of relevant helper methods
Adding ability to convert PCM buffers to float and vice-versa
Extracting the calculation of the time duration of a number of sample frames out to the Duration class