Introduce MemoryPolicy API

Part 1 of #438 
Traditionally these are named "first" and "rest". At the very least, I don't think we should use "secondary" because it conveys they are somehow less important.