Encode non literals as remote objects

Submitting for review, specs to follow.

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.