clean up and refactor the compressed_app provider

I hear DRY is good. I also hear that puppet does some
stuff to make these easier to write, so I used it.