correct synchronization and threadlocal logic

Previously the whole method was synchronized even if threadlocals
were used (which are thread safe). And previously the sharedEngine
was set and returned only when it /was not/ needed ie when
getIsolateThreads() returned true.

Now getEngine does what it says it does.
* ScriptedDecideRule.java
    getEngine() - tiny cosmetic fixups
begin removing MultiReporter

* MultiReporter.java
    deprecated
* ToePool, ToeThread, WorkQueue, WorkQueueFrontier, PrecedenceProvider, CrawlURI, FetchStats.java
    remove MultiReporter#getReports() and reportTo(String, PrintWriter)
    these are not used as MultiReporter specifies, and MultiReporter is going away anyhow
use methods to specify which report rather than string constants

* MultiReporter
    deleted. direct method calls are a better way to specify the kind of report desired
    getReports was never used to choose from the array of strings. no use case for MultiReporter.
* ArchiveUtils
    writeReportToString was not used, and it used the now deleted MultiReporter#reportTo
* DevUtils, Frontier, ToePool, AbstractFrontier, WorkQueueFrontier
    MultiReporter -> Reporter and make methods that implemented named multireport public
* FrontierNonemptyReport, FrontierSummaryReport
    call the appropriate report method instead of passing a string constant
Merge pull request #11 from travisfw/new-reports

deleting MultiReporter interface
* WorkQueueFrontier.java
    remove unused variable
Change scope of most/all default-scope i.e. package-scoped class members to protected, to make heritrix more friendly to third-party extensions. (I don't think there was ever an intent to limit the scope of any of these to package-only.)
Merge branch 'master' into no-package-scope
Move test classes into test area of source tree
 * LongToIntConsistentHashTest.java, UriUtilsTest.java
Fix tests revealed to be failing
* UriUtils.java
    isLikelyFalsePositive() - do not flag urls starting with ../ as likely false positives
* UriUtilsTest.java
    remove test url that is now rejected
HER-1987 record charset used for link extraction in warc metadata record
* WARCWriterProcessor.java
    writeMetadata() - if extractors have left annotations about the encoding used to interpret content, include them in the metadata (HER-1987)
HER-1987 record charset used for link extraction in warc metadata record
* WARCWriterProcessor.java
    writeMetadata() - write metadata entry charsetForLinkExtraction
* ConfigFileEditor.java, ConfigPathEditor.java
    remove unused classes
Revert "* ConfigFileEditor.java, ConfigPathEditor.java"

This reverts commit 6dae8f9a17db80e9bbb068dcb2851df3bdcd8f90.

Revert to fix this problem: ... Failed to convert property value of type 'java.lang.String' to required type 'org.archive.spring.ConfigPath' for property 'path'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [org.archive.spring.ConfigPath] for property 'path': no matching editors or conversion strategy found
generics warnings fixes

This commit does not change any functionality, just
alters generics to reduce warnings in Eclipse.
Merge pull request #12 from travisfw/generics-fixes

generics warnings fixes
Fix HER-2013 scheme-less relative URI not resolved correctly
* LaxURI.java
    parseUriReference() - fix logic testing if uri string is a path to respect scheme-less uris even if they contain colons
* UURIFactoryTest.java
    add test for scheme-less relative uri (with colons)
count path segments by looking at the path

* TooManyPathSegmentsDecideRule
    evaluate(CrawlURI) previously counted slashes in the full URI.
    Now it only counts slashes in the path of the URI, meaning a URI
    with slashes in the query string will not be counted as having more
    path segments than it has in its path.
Merge pull request #13 from travisfw/master

have TooManyPathSegmentsDecideRule count path segments only
revert a change that may break bdb history