How to utilize the denoise passes to build a denoise node network in the compositor
Denoising Data Passes
The Denoising Data option in experimental builds and experimental render feature set currently enables some denoising passes, however they are meant to be for an animation denoising feature that is currently still being designed. They are not meant to be recombined or used for anything else then for the feature as you can see explained in the devtalk forums by Brecht Van Lommel:

It’s intended for the upcoming feature of animation denoising, where denoising happens in a post processing pass ones all the frames have been rendered. It doesn’t really have a purpose outside of that.

Removing Noise with Bilateral Blur Node using Compositing Nodes
It is however possible to remove some noise using compositing nodes.
That requires recombining the passes to the final result by adding direct and indirect, multiplying them by color and adding all of the results of this for Diffuse, Glossy, Transmission and Subsurface together. You would also need to add Emission and Environment. Color Mix Nodes can be used for this. See this image from https://en.blender.org/index.php/Doc:2.6/Manual/Render/Cycles/Passes:

To de-noise certain noisy passes you can use Bilateral Blur node. It blurs an image and uses a Determinator image to determine what edges not to blur. Basically the Determinator needs to be an image that has single solid colors or smooth gradients in the areas that need to be blurred, but if the areas differ in color and there is a sudden change on edges, they will be blurred separately and an edge between them will remain sharp. There are many ways to make this Determinator image so some testing and playing around to see what works better for your purpose will be needed, but you can add or subtract different kinds of passes to get it. Object and Material Index passes can be use for this. You can quickly give all materials and objects unique pass indices with Python:
import bpy

for i,m in enumerate(bpy.data.materials):
    m.pass_index = i    
for i,o in enumerate(bpy.data.objects):
    o.pass_index = i

or you could set them manually as well.
You can sometimes use color passes as well to get good results. Normal pass is often very useful for this as well. See the documentation for Bilateral Blur node
You would also need to play around with the settings of Bilateral Blur nodes to see what works best in your case.
This would look something like this if done for indirect Glossy and Diffuse passes that happen to be the noisiest in my example scene:

Sometimes Direct passes may be noisy as well - you should see what the case is in your scenes.