Add newServerAggregator method on SingleAggregateFunction to restore serialized state

Add method to maintain the same abstraction for restoring serialized state for server aggregator. If the client and server aggregator are the same, we just need to create a new aggregator and call aggregate on it. If they're different, we create a new client aggregator, call aggregate (to setup any state), and then instantiate a server aggregator passing the client aggregator as an argument to copy the state out of.