Implement pp6calculator Day 3 Homework Part 1

Create new `ThreeVector` class to factor spatial vector functionality
out of `FourVector`. Provide same operator system as for `FourVector`.

Refactor `FourVector` to hold an instance of `ThreeVector` to represent
the space-like component. Reimplement methods and operators to use this
instance as needed.

Change value of `FourVector::c` to be unity to ensure natural units are
used for upcoming work with particle enrgy and momenta.
Implement pp6calculator Day 3 Homework Part 2

Implement `Particle` class with interface as required by Day 3
homework design study.
BUGFIX : Correct indices used in invariant mass calc

Invariant mass calculation swapped indices for muons and antimuons.
Results were similar enough that error wasn't spotted. Day 3
implementation resulted in discrepancy in results and lead to bug
being identified.

Correct indices used for each array and validate against Day 3 results.
Implement pp6calculator Day 3 Homework Part 3

Reimplement solution to Day 2 muon analysis using new Particle and
FourVector classes. Add internal struct to hold arrays of event ids
and Particles to help manage and link these values.

Count number of mu- and mu+ as before, and provide new function
`createParticles` to create the internal `EventArray` struct using
this count to initialize the arrays.

Calculation otherwise proceeds as before.
Complete pp6calculator Homework Exercise for Day 3

Update README with information on completion, fix minor typo in top
level menu information.