storage : add an init function

needed to initialise the lua parts
film : make some existing functions visible to the rest of the world
j2k : create a real enum for the presets

this is needed for lua that needs the enum names
gallery : make a function to calculate storage size

the storage size reported to the outside world is not the real size
this is recalculated multiple time, so just create a function for that
Merge pull request #213 from darktable-org/lua_review

storage : add an init function
masks : fix shape removing

removing shape with right-click doesn't hide the other #9366
shape are not permanently deleted with right-click :
user need to use context-menu in the manager.
mask manager : update icons correctly
lighttable: fix scroll bars.
hdr loading: don't try rawspeed for pfm,hdr,exr

silences a lot of console output.
Add lua as a build dependency
lua : add debug domain
lua : initialisation code, loading libraries
lua : add wrappers to call lua from DT

these function allow to load a file or a string, call it as a lua content and treat errors correctly
lua : add DT specific location to module search path

* add $(DATADIR)/lua/*.lua
* add $(USER_DATADIR)/lua/*.lua
lua : run scripts on startup

* first run $(DATADIR)/rc.lua
* then run $(USER_DATADIR)/rc.lua

an empty rc.lua is also installed in $(DATADIR) to avoid an error on
startup

tmp : to squash
lua : add dt specific prints callable from lua

* darktable.print : prints to the control log
* darktable.print_error : print to the lua logdomain
lua : add darktable.configuration

this table contains static data about the current DT instance

* path to the temporary directory
* path to the config directory
* path to the cache directory
* dartktable version string
* if the lua logdomain is active or not
lua : add lua preferences

adds three function to the API

* darktable.preferences.register(script,name,type,label,tooltip,default,[min,max])
  creates a new preference entry in the lua tab of pre
  script : invisible prefix to guarentee unicity of preferences
  name : the name of the preference to display
  type : one of "string" "bool" "integer"
  tooltip : the tooltip to display
  default : default value
  min : (int only) minimum value
  max : (int only) maximum value

* darktable.preferences.read(script,name,type) : value
  reads a value from a lua preference
  script : an invisible prefix
  name : name of the preference to read
  type : the type of the preference to read
  returns : the value of the preference

* darktable.preferences.write(script,name,type,value)
  writes a value to a lua preference
  script : an invisible prefix
  name : name of the preference to set
  type : type of the preference
  value : value to set
Merge pull request #214 from darktable-org/lua_review

First real lua merge
mask manager : fix grouping bugs

another fix about shape removing in sub-groups
fix the add exist feature
fix shape parameters when grouping