[view] AbstractList: extract single abstract view

Extract to compoments.singleabstract
[views+route] Add single abstract viewer (+ state log ui)

Route to /abstracts/id
[views+js] Use viewer for readonly states in adminAbstracts
[views+js] Use viewer for readonly states in user dashboard
[views] Extract the log viewer code into components.statelog
[js] move state log date formatting code to astate (for re-use)
[views] adminAbstracts: explicitly pass null to note in setState
Merge pull request #158 from gicmo/abstractViewer

Implement a single abstract viewer + log viewer component 

OK, looks good :+1: