Add UI fields for Spot instances

Add in an optional block for enabling Spot slaves and specifying a max bid
price including help text.
Startup Scripts for Spot Instances

Spot instances can take a while to start up. These scripts are meant as
samples of how to set up an EC2 instance to register itself as a headless
slave to the Jenkins server when it has been launched.
Refactor EC2Slave to EC2SpotSlave and EC2OndemandSlave

Create an abstract super class for EC2 slaves with ondemand and spot
subclasses. If spot specific fields are provided, we spawn a EC2SpotSlave
which should be configured to register themselves with Jenkins. This prevents
Jenks from having to poll EC2 to check and see if the Spot instance has
started up prior to connecting to it via ssh. This also makes transitioning
to using persistant spot bids easier.
Add unit test for Spot configuration

Create unit tests that test the configuration of Spot slaves.
EC2 type is now displayed on node configure page. If the node is a Spot instance, the specified bid price will also be displayed.
Launcher page

Computer launcher now displays proper message for spot instances
Link to ami scripts in UI

Moved the ami scripts to the webapp folder; they are now packaged in
the .hpi file and are put into the jenkins static resources directory
upon plugin install. The description message under the chechbox for
Spot Instances now includes a link to the ami script.
Fix some concerns with use of Spot instances

Remove unecessary super call from EC2AbstractSlave
Refactor provisioning of spot/ondemand instances to reuse code where possible
Add tags to Spot Request
Remove the connectViaSsh field from slaves
Create a new launcher for Spot slaves
Add a check for the specified Spot price before requesting an instance
Add additional comments
Updated AMI setup script for ubuntu to use script from jenkins server and not github
Added data migration handling. Moved ec2Type into an abstract method for handling backward compatability.
Address inline comments from review

Fix typos in comments
Update comments with SlaveTemplate
Fix potential infinite recursion
Update slave launcher page for EC2SpotComputerLauncher
added ability to check for public key hash as well.
Fix an issue when reconfiguring slaves

Spot instances would cause a NPE. This should be fixed now.
Merge pull request #43 from bwall/ec2-spot-provision

JENKINS-8616 Use spot instances
Merge pull request #45 from joekiller/public-finger-print

JENKINS-17683 Incorrect hash calculated for custom SSH keys