Combine {Path,Particle}TracerPathType into TracerPathType

Add scaffolding in {Path,Particle}Tracer for handling "non-native"
path types.

Create new tracer.go file to hold common functionality between
PathTracer and ParticleTracer.

Also add new TracerContributionType type and use it.

Feature-Start: twpt-basic
Combine {Path,Particle}TracerWeighingMethod into TracerWeighingMethod
Combine {Path,Particle}TracerRRContribution into one type
Combined {Path,Particle}DebugRecord into TracerDebugRecord
Combine {path,Particle}Record into TracerRecord

Make it have a contribution field and an Accumulate() method that
uses it to accumulate correctly.
Take into account all path types when using uniform weights
Implement TwoWayPathTracingRenderer
Add TwoWayPathTracer versions of all scenes