Templated SoftLeptonTagInfo + PAT support for CandSoftLeptonTagInfo

SoftLeptonTagInfo has been templated to support candidate-based SoftLeptonTagInfo. This will allow the existing soft lepton taggers to fully support MiniAOD. The PAT support for CandSoftLeptonTagInfo has also been included.

The code changes implemented in this PR should be completely transparent to the standard reconstruction. The attached plots show the performance of the existing soft muon and soft electron taggers before and after the changes.

**SET (soft electron tagger)**
![performance_set](https://cloud.githubusercontent.com/assets/4885289/5050709/78012912-6bfe-11e4-9a8f-39df28863751.png)

**SMT (soft muon tagger)**
![performance_smt](https://cloud.githubusercontent.com/assets/4885289/5050712/7fbc57a8-6bfe-11e4-8675-05036abdac6a.png)

The above is handled correctly. For templates, the class version needs to be declared in the header via the ```CMS_CLASS_VERSION``` macro. However, for this case I suggest using ```CMS_CLASS_VERSION(2)``` (0 and 1 have special meaning for ROOT). The reason we often start with 10 is if one tries to read a really old file written before we added the class version, then ROOT will essentially take over a class version number for each new instances of the class it sees in the job. So we chose 10 since we never had any class change its schema anywhere near 10 times and therefore 10 would guarantee to never clash. However, since this is a brand new class which has never been written to a file, it is better to use a smaller class version number since it ultimately saves memory (since ROOT allocates an array of length large enough to accommodate all class version numbers it has seen for a given class).

Also, since the actual class type was changed it means the branch names have to change as well (since they are based on the actually class type not on a typedef).