initial commit
base implementation and demo page
use better-popover class, update demo page
add specs, improve demo