Implement pp6calculator Day 4 Homework

Add operation to Day 4 menu to call `pp6day4_muonanalysis` function for
implementing the homework solution.

Provide typedefs to build data structures useful in solution

- `Event` : Pair connecting int(EventId) to Particle
- `EventVector` : Vector of Events
- `RunMap` : map string(RunId) to `EventVector`
- `InvMassPair` : pair linking two Events
- `InvMassTable` : multimap double(InvariantMass) to InvMassPair

Factor problem into six main steps:

- Initialize `ParticleInfo` database from user supplied file
- Create a `RunMap` instance and read data from user supplied file
  into this structure
- Extract `EventVector` mapped from "run4.dat" RunId
- Copy mu- and mu+ Events from the run4.dat `EventVector` into
  dedicated `EventVector`s for each type
- Take Cartesian Product of mu-/mu+ `EventVectors`, operation being
  the invariant mass of the combinations and copy the resultant
  invariant mass and the `EventPair` into an `InvMassTable` instance
- Iterate over the `InvMassTable` presenting 10 largest invariant masses
  and the event pair that created it.

No sorting is needed as the multimap used to store invariant masses
sorts the keys (the invariant masses) for us.
Fix some missing headers
Fix bug in display of results of largest invariant mass combinations
Modified files for the start of Day 5.
ParticleInfo modified to use the singleton design pattern.
Particle modified to take advantage of the global point of access to ParticleInfo.  It no longer needs to be given the mass, it can be determined from the PDG code.
Modify previous code to adapt to new Particle interface.
Add templated getLine function to FileReader

Add templated getLine function to FileReader, to allow whole lines to be
read in as any object, e.g. Particle.
Also add private unimplemented copy constructor and copy assignment
operators to avoid copying of this class.
Update GNU/Clang compile flag setting

Update check of compiler ID to apply to GNU and Clang compilers.
Remove -fno-nonansi-builtins from default set, only adding this
to list when GNU compiler is used (Clang does not recognise it).

Check for -stdlib with libc++ flag and apply it can be used and
we are on Apple (libc++ on platforms other than OS X and FreeBSD
is incomplete).

Check for availability of 0x and 11 C++ standards, using best
available and otherwise defaulting to C++98.