add libluaautoc as a dependency
lua : add the typing system

A dt-lua type is
* a full user data
* registered to luaautoc
* with index/newindex/pairs metamethods
* if it is a struct, registered members are automatically accessed/iterated
* callbacks are used to access/iterate other members
lua : introduce glist helpers

this allows function to easily push and pull a glist of lautoc-typed objects

the list is converted into a numerically-indexed table of converted objects

when converting back all objects are taken independently of their index
lua : add darktable.debug with some debugging function

currently this contains two fields

darktable.debug.debug : means we want extra debugging information

dartabke.debug.dump(object,[name]) : will return a string describing object. object can be anything, name is a name to help pretty printing

from now on, your test rc.lua should start with the following code

dt = require "darktable"
print(dt.debug.dump(dt,"dt")

this will print a dump of the complete environement.

you can set dt.debug.debug to true, but expect the result to be unreadable
lua : add the image type

each image has the following fields
* exif_exposure
* exif_aperture
* exit_iso
* exif_focal_length
* exif_focus_distance
* exif_crop
* exif_maker
* exif_model
* exif_datetime_taken
* filename (RO)
* width (RO)
* height (RO)
* longitude
* latitude
* rating
* creator
* publisher
* title
* description
* rights
* path (RO)
* duplicate_index (RO)
* is_ldr (RO)
* is_hdr (RO)
* is_raw (RO)
* id (RO)
* <colorlabel>

images can't be accessed in this commit.
lua : database handling

dt.database is a "magic table" with the following properties
* #database : number of images in the db
* database[i] : returns the image i
* database.duplicate(image) : returns a new image, duplicate of the param
* database.import(string) : if string is a file, import it. if it's a directory, import all images in the directory

* image:duplicate() is an alias for database.duplicate(image)
lua : add selection handling

 * darktable.gui.selection([table of images]) :
    if a table of images is provided, set the selection to that table
      returns the old selection
    if no table is provided, return the selection
lua : introduce module handling

modules are thing dynamically loaded at runtime, like iop, storages, format

export a table giving the current value for the module

* darktable.storage.<storage_name> : current configuration for the storage
* darktable.format.<format_name> : current configuration for the format
lua : introduce storage

* darktable.register_storage(short_name,name,store,finalizer)

register a new storage that can be selected by the user from the UI.
short name : unique name for the storage
name : name displayed in the UI
store : function(storage,image,format,img_number,img_total,high_quality)
   called once for each image
finalizer : function(storage)
   called after all images have been processed

note that the storage acts like a lua table : you can add your own fields to it
fix compilation when lua is not installed (not just disabled)
fix a missing NULL at the end of a vararg list
fix detection of reused metatables
lua : better handling of numbers in storage, allow to iterate over unknown fields

note that ipairs is not supported yet.
Review and update 1 fuzzy translation.
Add 24 new translated messages.
Merge pull request #233 from tawtao/thai-lang-translation

Update Thai language translation
Update french translation.
Updated danish translation by Thomas Pryds.
drawn masks : disable colorpicker
mask manager : fix a pb to unselect active group
lua/storage :  add a second parameter to the finalizer callback

this second argument is a table
* key => the image processed
* value => the filename of the exported file

also make the callbacks optional