Added Eclipse project files to .gitignore
[FIXED JENKINS-17469] Clearer separation of concerns

Refactoring classses to make the concerns of each class clearer.

All state changes of an ExternalResource are now made by the
ExternalResourceManager instead of whatever object is requesting the
resource.

To make this happen, the reserve/lock/release methods have been re-written using the
Template Method Pattern, implementing the state change flow in the abstract base class
and letting sub-classes continue to implement the inner locking mechanism by calling the
abstract method reservation/locking/releasingMechanism().

A sequence diagram of the new plugin flow can be seen here:
http://www.websequencediagrams.com/cgi-bin/cdraw?lz=cGFydGljaXBhbnQgRXh0ZXJuYWxSZXNRdWV1ZVRhc2tEaXNwYXRjaGVyCgAfDFNlbGVjdGlvbkNyaXRlcmlhABENUmVsZWFzZVJ1bkxpc3RlbgAuDwBdC291cmNlTWFuYWcAUg9BdmFpbGFiaWxpdHlGaWx0ACQfCgpvcHQgV2hlbiBsb29raW5nIGZvciBleGVjdXRvcgoAgT0eLT4AXRM6IGdldACBGxBzTGlzdChub2RlKQAeNmYAgUcFRW5hYmxlZGFuZACBYQdsZSgAGjdnZXRNYXRjaGluZwCBHAkAKCQAgm4XOiByZXNlcnZlKHIAgxcHAIFcDQCDJAwAMhM6IHNldFIAOwZkKCkKZW5kAIMPC2pvYiBzdGFydHMKAIQvESAtLT4AexgAgQoIKSAgW2lmIG5vdACBHQhkXSAAgQYYIACBURMgOgCBEQ4AcxMAgX4bbG9jawCBXDpMb2NrAIF9F2ZpbmlzaGVzCgCGJhIAgXsaIHIAhl8GKCkAgWoZAIJAEgB-DG51bGwAgxwG&s=default
Merge pull request #1 from patrik-johansson/refactoring

Refactoring classses to make the concerns of each class clearer.

All state changes of an ExternalResource are now made by the
ExternalResourceManager instead of whatever object is requesting the
resource.