Stop calling Listeners.ToArray()

By making the ListenerCollection an IList, we can simply pass the
reference to it to the Session constructor instead of creating a new
array every time we construct a session.
Performance enhancements for SqlBuilders
Use for instead of enumerator
Fixed tests broken by perf update to SqlBuilders