provide AgentSetBuilder

so that ArrayAgentSet can be a hidden implementation detail
update extensions for AgentSet changes