Implement AbstractExplorerItem containing logic common for Project and ProjectItem

There is lot of logic duplicated in Project and ProjectItem let's create common ancestor to hold this logic.

Some methods are missing in Project like refresh() method implemented only for ProjectItem