Allow Ptr and RefToBase to be used for lookup in AssociationVector

By allowing Ptr and RefToBase to be used to lookup items with an
AssociationVector we can avoid an unnecessary creation of a Ref.
Allow perfect forwarding of KeyVal for AssociationMap

Use C++11 perfect forwarding to handle constructing of key and value
components from allowed constructor arguments. This makes creating an
AssociationMap easier.
Require that AssociationMap be initialized before doing an insert

It is now a requirement that AssociationMap be initialized with information
about which container(s) it will use.
AssociationMap must be initialized and can use Ptr and RefToBase for lookup

Changed AssocationMap so that it is possible to lookup items use a
Ptr or a RefToBase. This avoids requiring users to create a edm::Ref
just for lookup.
Added a constructor to AssociationMap to allow one to associate which
collection(s) the container will use for association. This constructor
must be used since it is no longer possible to have those collections
be set on the first insert to the container.
No longer create a edm::RefProd from a edm::Ref

The design which allowed a edm::RefProd to be constructed from an
edm::Ref caused problems for future changes (edm::View and slimming).
Given this was equivalent to taking an arbitrary pointer and then
obtaining which std::vector<> the data is stored in, we determined
this was not an absolute requirement.
No longer create a edm::RefToBaseProd from a edm::Ref or RefToBase

The design which allowed a RefToBaseProd to be constructed from an
edm::Ref or RefToBase caused problems for future changes (edm::View
and slimming). Given this was equivalent to taking an arbitrary pointer
and then obtaining which std::vector<> the data is stored in, we
determined this was not an absolute requirement.