Separate MessageDelegateContextMenu to it's own base component
This separates the message delegate actions from the base context menu that's shared, it's now in it's own component. This also de-duplicates some of the common actions from message & file types, and makes it less painful to add new menus to other delegates in the future.