angular directive changes, still missing #2605

tabs to spaces, fix white space, separate link and compile interfaces to be casteable
> It's recommended to use the "directive definition object" form.

I am happy with the `compile` definition you have added :+1: That can follow the definition object form. Just don't like it for the `link` function.