Add global steering of default behavior of TTreeCache.

(i ) automatic creation of a TTreeCache (a read cache) for TTrees without
     explicit setup per tree via TTree::SetCacheSize().
(ii) allows specification of the TTreeCache learn prefill type for new
     TTreeCaches globally without a per TTreeCache call of
     TTreeCache::SetLearnPrefill().

Both features are controlled by environment variables or otherwise via resource
variables, e.g. specified in a rootrc file or set via gEnv->SetValue().

New resource variable names added are TTreeCache.Size, TTreeCache.Prefill and
environment variable names ROOT_TTREECACHE_SIZE and ROOT_TTREECACHE_PREFILL.
See the additions to rootrc.in (for system.rootrc) for details of the settings.

Files involved in the patch:

config/rootrc.in
io/io/src/TFilePrefetch.cxx
tree/tree/inc/TChain.h
tree/tree/inc/TTree.h
tree/tree/inc/TTreeCache.h
tree/tree/src/TBranch.cxx
tree/tree/src/TChain.cxx
tree/tree/src/TTree.cxx
tree/tree/src/TTreeCache.cxx

Changes not strictly related to the above features, but found
during testing of the automatic TTreeCache setup:

io/io/src/TFilePrefetch.cxx: TFilePrefetch::SetFile
 * Avoid indefinite wait on a semaphore

tree/tree/src/TBranch.cxx: TBranch::GetEntry and TBranch::GetEntryExport
 * Set fReadEntry at the start of the methods, in particular before
   calling GetBasket which in turn cause the value to be checked, e.g. via
   TTreeCache::AddBranch(TBranch *b, Bool_t) which tests b->GetReadEntry().

tree/tree/src/TTreeCache.cxx: TTreeCache::AddBranch(TBranch *, bool)
 * avoid recursive loop between TTreeCache::AddBranch(TBranch*, bool),
   TTreeCache::LearnPrefill() and TTreeCache::AddBranch(char const*, bool)

From: David Smith <david.smith@cern.ch>

Conflicts:
	tree/tree/inc/TTree.h