Moves the check for root to after options parse

This allows you to run the script with --help and --version without
needing to be root
Supresses output from mkfs

This output is fairly verbose and makes it harder to see messages from
the script. Also moves the messages to just above the command.
Fixes and improves the perpare_device function
Adds a progress bar to the tar commands

This makes use of the pv function, falling back to cat if it is not
available.
Makes the script executable
Adds different options based on filesystem type
Removes printing the partition layout
Fixes the checksum checking
Tidies up some output and comments