def send_push(type, payload = nil, target = nil, options = {}, &callback)
      build_and_send_packet(:send_push, type, payload, target, options, &callback)
    end
def send_push(type, payload = nil, target = nil, options = {}, &callback)
      build_and_send_packet(:send_push, type, payload, target, options, &callback)
    end
Send a request to a single target or multiple targets with no response expected other
 than routing failures
 Persist the request en route to reduce the chance of it being lost at the expense of some
 additional network overhead
 Enqueue the request if the target is not currently available
 Never automatically retry the request if there is the possibility of it being duplicated
 Set time-to-live to be forever

 === Parameters
 type(String):: Dispatch route for the request; typically identifies actor and action
 payload(Object):: Data to be sent with marshalling en route
 target(Hash|NilClass) Target for request, which may be a specific agent (using :agent_id),
   potentially multiple targets (using :tags, :scope, :selector), or nil to route solely
   using type:
   :agent_id(String):: serialized identity of specific target
   :tags(Array):: Tags that must all be associated with a target for it to be selected
   :scope(Hash):: Scoping to be used to restrict routing
     :account(Integer):: Restrict to agents with this account id
     :shard(Integer):: Restrict to agents with this shard id, or if value is Packet::GLOBAL,
       ones with no shard id
   :selector(Symbol):: Which of the matched targets to be selected, either :any or :all,
     defaults to :any
 options(Hash):: Request options
   :token(String):: Universally unique ID for request; defaults to random generated
   :time_to_live(Numeric):: Number of seconds before a request expires and is to be ignored;
     non-positive value or nil means never expire; defaults to 0

 === Block
 Optional block used to process routing responses asynchronously with the following parameter:
   result(Result):: Response with an OperationResult of SUCCESS, RETRY, NON_DELIVERY, or ERROR,
     with an initial SUCCESS response containing the targets to which the request was sent
     and any additional responses indicating any failures to actually route the request
     to those targets, use RightScale::OperationResult.from_results to decode

 === Return
 true:: Always return true

 === Raise
 ArgumentError:: If target invalid
 SendFailure:: If sending of request failed unexpectedly
 TemporarilyOffline:: If cannot send request because RightNet client currently disconnected
   and offline queueing is disabled