Add #_setAttributes and clean up #setElement.

Setting attributes and setting the element are distinct operations.  It's telling that we had to pass the argument through two methods before using it.  Further, it will complicate future additions to the `#setElement` API.

I realize it's another method that needs to the overwritten but it's a distinct operation and I think we'll regret conflating the two.