angular directive changes, still missing #2605

tabs to spaces, fix white space, separate link and compile interfaces to be casteable
this basically makes `link` compatible with anything that doesn't have `pre` or `post` members. E.g. `link : 'bad'` will compile. I think