First state of UI rewrite, reimplemenation of agent status displays

@abnanda1 @DamianEdwards @davidfowl @moozzyk 
service.tryGetAgent always returns an instance or null, nothing outside of this code path should modify target[property]