New Feature: Managing Foreign-Source Repository Strategy

Adding required insfrastructure to select requisition strategy.

A factory class has been created in order to dynamically select the
strategy used to manage requisition based on the value of a system
property called org.opennms.provisiond.repositoryImplementation,
declared on opennms.properties. The default value is file (the currently
used strategy).

Available strategies for Production:
- file (default)
- fastFile (recommended for fastest response, at expense of memory resources)

Available experimental strategies:

- fused
- fastFused
- queueing
- fastQueueing
- caching
- fastCaching

The "fast" version means use the implementations for "fastFile" in
conjunction with ether fused, queueing or caching.

The default qualifier (i.e. "deployed", "pending") for the
ForeignSourceRepository interface are going to use the factory
to obtain the configured strategy.

The DirectoryWatcher class (used by the "fastFile" strategy) is going to
create and maintain a tread for the directory to watch using Java7's
directory watcher feature. The reason for the thread is because and
infinite loop is required to wait for file changes.

Tests:

Tested on a live OpenNMS with more than 500 requisitions and more than
10000 nodes in total. The response time of the Requisitions ReST API is
almost instantaneously. Of course a cache of the requisitions is kept on
memory in order to accelerate the response time.