implement `retained` attribute
add abstraction attributes to test case

stronger assertion: adding `abstract` and `default` asserts that
redirection will favor the retained state, if one exists, ahead of the
default concrete state
Merge pull request #13 from nickfargo/retained-attribute

Retained attribute