Miscellaneous DiracKernel improvements

* Storing a vector<Point> per Elem rather than a set<Point> for
  DiracKernels.  A std::set<Point> is always somewhat dangerous due to
  the floating point nature of operator< for Points.
* The DiracKernel object now uses two DiracKernelInfo objects to avoid duplicating code.
* Give DiracKernelInfo a more standard interface since it is used in a few more places now...
* Adding DiracKernel::hasPoint()
* Implement DiracKernelInfo::addPoint() in terms of DiracKernelInfo::hasPoint()
* Adding documentation.

Refs #2847.