Refactor provider

This commit refactors the provider to move the different parts of the
install action into separate methods.
Fix missing ? in exists method

This commit adds a missing ? from a call to ::File#exists? in the
provider.