initial infrastructure for user-specified element refinement selection

Sometimes it would be useful for the user to mark elements directly for refinement & coarsening.  This provides a mechanism for that functionality.  Any user class that derives from MeshRefinement::ElementFlagging and then implements the flag_elements() member can then use the new

```c++
MeshRefinement::flag_elements_by_user_selection (ElementFlagging &element_flagging) 
```

member function to directly mark what elements they would like refined.

This can be done in leu of or to augment traditional error indicator based flagging.

Attached is an image from an application code where I can use this new functionality to manually perform physics-based feature adaption.

Besides the academic impurity, any objections for libmesh/master?

![Screenshot-Untitled Window](https://f.cloud.github.com/assets/2366572/287781/35d5c652-9260-11e2-8f15-5d30d81cd827.png)