Encode non literals as remote objects

This means that the local object does not need to make any special accommodations for q-connection. The other side of the connection can invoke any method. This is especially useful when returning an array of objects since before they would have needed to be manually wrapped in a promise.