update Sort Service

- keep nulls at bottom of list regardless of sort order
- if user provides custom sort, allow them to have full control over sort