Angular.js advanced directive concepts of scope, transclusion, and compilation