4 - Use NodeViews for embedded content (Code, Drawings) where control is needed.
5 - Probably still easiest to have seperate (codemirror) MD editor. Can alter display output via NodeViews to make MD like
6 but its tricky since editing the markdown content would change the block definition/type while editing.