Refactor the adding of MBeanAttribute to MBeanSampler

MBeanAttribute has a dependency on MBeanSampler because of
the publish method. This commit allows us to inject the dependency.
When adding an MBeanAttribute to an MBeanSampler, the method will
check that MBeanAttribute has a non-null sampler. If the sampler
is null, it will set the sampler to the current MBeanSampler executing
the method.
Slight changes to getting attributes from mbean node

Expose the method to get a list of MBeanAttributes from a <mbean> node,
this makes testing easier.
Also attempt to remove code duplication using makeMBeanAttribute, and
constructor overloading in MBeanAttribute.
clean up constructors and overloaded methods