Add CommandList

Says pretty much exactly what it is. Let me know your thoughts. CommandList supports pretty much all of the operations that the normal client does and does not lock the client while its active.