WIP: VideoIO with AVOptions v0.01 (compatible with ffmpeg 2.4.2)

AVOptions API
============
Maximiliano Suster
October 2014

AVOptions provides a generic system to get/set options for Devices, formats and Codecs.
It relies on AVOptions, AVDictionary and AVDeviceCapabilitiesQuery APIs.
AVOptions API is contained in src/avoptions.jl.

Currently the following functions in work:

       document_all_options
       print_options
       is_option
       set_default_options   
       set_option 
       get_option
       create_dictionary
       set_options_with_dictionary

Ongoing work:
The following functions depend on the DeviceCapabilitiesQuery API.  Some require the newly updated ffmpeg 2.4 libraries (>=AVUtil 53). 

      query_device_ranges,
      set_device_with_query,
      list_devices
      get_metadata 
      
Examples and documentation will be presented once completed.   



This macro might work, but it's output is a little strange.
```julia
julia> macroexpand(:(@assert_type("image_size")))
:(if "image_size" == ""
        #121#option = :default
    else
        if "image_size" == "image_size"
            #121#option = :image_size
        else
            if "image_size" == "pixel_fmt"
                #121#option = :pixel_fmt
            else
                if "image_size" == "video_rate"
                    #121#option = :video_rate
                else
                    throw(ArgumentError("option does not exist!"))
                end
            end
        end
    end)
```

You probably want to:
1. remove "option =" from each line
2. not quote the return, and remove the "$" from `ex`