Lightning Componentではaura:attributeでsObject型の変数を用意することができます。
画面入力などで変数にセットした値は、JS側でcomponent.getを使って取得することができます。
console.logで確認した変数の値です。
Apexクラスを呼び出す方法は次のような感じになります。setParamsで特定の変数に値をセットできます。
・・・ですが、sObject型の値を直接渡すことはできないみたいです。
試しにデバッグしてみたところ、次のエラーが発生しました。
対応方法ですが、RemoteActionのときにも利用できたJSONに変換する方法がいいのかなと思います。(RemoteActionはJSONじゃなくてもオブジェクト型そのまま渡せるようになっているみたいです。)
Apexクラス側の引数にはString型を指定します。
Lightning側ではJSON.stringify()をつかってJSON変換します。
デバッグした結果がこちらです。この方法なら1つの変数で複数の値を渡すことができます。
あとはApex側でMapに変換して処理していけるかなと思います。とりあえず確認できた方法はこんな感じですが、もっと簡単な方法があるのかも...。
追記
あとで分かったことなんですが、このエラーはEventオブジェクトだと発生するみたいで、その他のオブジェクトはそのまま渡せるみたいです。とりあえずAccountでそのまま渡せることを確認できました。また、開発者ガイドでもカスタムオブジェクトを渡して実装いていました。
ということでEventオブジェクトを扱うときはこのエラーに注意しましょうという感じでした。(Summer'15の環境で発生したエラーです。)
Twitterで教えて貰った検証用のサンプルコードです。