Handle package status in provision.sh for repeat provisions

This treats provision.sh more like the provisioning script it should be and checks for the status of each package before adding it to the array of apt packages to be installed. If the array is not empty, `apt-get update` runs and then the `apt-get install` immediately after.

Sets us up to remove the initial provision flag, which was an ugly hack. Better yet, if a package fails to install the first time round, a quick `vagrant provision` should take care of it.
Move the MySQL configs down to the package installation check

Only sets these config parameters when needed
Comments clarification
Remove the initial provisioning flag that prevented repeat provisioning runs

Allows our individual package checking to do its work.

Need to correct the appending of our custom apt sources list as this makes the sources.list file grow and grow until the next `vagrant destroy`
Check for Composer in the right place
Provide our own default apt sources.list to append our custom sources to

The previous append method was adding our custom sources to the default sources.list every time that `vagrant provision` was run, causing many duplicate entries. Rather than deal with the logic of checking for existing lines in that file, we'll just take control of the entire thing by providing the default sources from Ubuntu 12.04 ourselves. There may be a better long term fix for this.