packer/cache: Extract cache path calculation to method
packer/cache: Preserve any extension found on keys

This allows us to hand cache paths to any programs that may want to
interpret file extensions in order to behave differently. For
example, VirtualBox may want ISO images to end with .iso.
Revert "builder/virtualbox: Copy ISO because VirtualBox can't recognize"

This reverts commit 688be43811007d33b9c70dec93b43782a4f71c06; instead
of copying the ISO (which can be huge), we have adjusted the cache path
to include the extension of the source file.

Conflicts:

	builder/virtualbox/step_download_iso.go
Merge pull request #205 from sit/preserve-cache-suffix

Preserve suffix of files put in the cache.