Add an initial revision of an audio server.

Add a functional skeleton for a Motown audio server.  Currently, the server
allows clients to create and configure AudioTracks, and push packets of audio
information to the tracks.  The mixer will mix for multiple outputs, and there
is a many to many relationship between tracks and outputs.  Right now, there is
only a single, generic, audio output implementation whose job in life is to
proved backpressure for audio track pipelines when no other outputs are present.

R=jeffbrown@google.com, jamesr@chromium.org
BUG=

Review URL: https://codereview.chromium.org/1424933002 .
diff --git a/services/media/audio/audio_server_app.cc b/services/media/audio/audio_server_app.cc
new file mode 100644
index 0000000..6a2a279
--- /dev/null
+++ b/services/media/audio/audio_server_app.cc
@@ -0,0 +1,47 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/logging.h"
+#include "mojo/application/application_runner_chromium.h"
+#include "mojo/public/c/system/main.h"
+#include "mojo/public/cpp/application/application_delegate.h"
+#include "mojo/public/cpp/application/application_impl.h"
+#include "services/media/audio/audio_server_app.h"
+
+#define VERBOSE 0
+
+namespace mojo {
+namespace media {
+namespace audio {
+
+AudioServerApp::AudioServerApp() {}
+AudioServerApp::~AudioServerApp() {}
+
+void AudioServerApp::Initialize(ApplicationImpl* app) {
+  server_impl_.Initialize();
+}
+
+bool AudioServerApp::ConfigureIncomingConnection(
+    ApplicationConnection* connection) {
+  connection->AddService(this);
+  return true;
+}
+
+void AudioServerApp::Quit() {
+}
+
+void AudioServerApp::Create(ApplicationConnection* connection,
+                            InterfaceRequest<AudioServer> request) {
+  bindings_.AddBinding(&server_impl_, request.Pass());
+}
+
+}  // namespace audio
+}  // namespace media
+}  // namespace mojo
+
+MojoResult MojoMain(MojoHandle app_request) {
+  mojo::ApplicationRunnerChromium runner(
+      new mojo::media::audio::AudioServerApp);
+  return runner.Run(app_request);
+}