message: support double type by 'make csapi'
  try to fix 'make csapi' issue with no-parameter functions
  'make csapi' enum support part 1
  do not generate ToString() if struct has no string fields
diff: @@ -30,6 +30,9 @@ func convert(s string, public bool) string {
  if strings.Contains(s, "uint8_t") {
  return visibility + strings.Replace(s, "uint8_t", "byte", -1)
  }
  + if strings.Contains(s, "double") {
  + return visibility + strings.Replace(s, "double", "double", -1)
  + }
  if strings.Contains(s, "void *") {
  return visibility + strings.Replace(s, "void *", "IntPtr ", -1)
  }
  @@ -77,10 +80,10 @@ func main() {
  write("{")
  write(" public static partial class Toggl")
  write(" {")
  - write(" private const string dll = \"TogglDesktopDLL.dll\";");
  - write(" private const CharSet charset = CharSet.Unicode;");
  - write(" private const CallingConvention convention = CallingConvention.Cdecl;");
  - write(" private const int structPackingBytes = 8;");
  + write(" private const string dll = \"TogglDesktopDLL.dll\";")
  + write(" private const CharSet charset = CharSet.Unicode;")
  + write(" private const CallingConvention convention = CallingConvention.Cdecl;")
  + write(" private const int structPackingBytes = 8;")
  write("")
  csclass, csfunc, cscallback, firstStringField := "", "", "", ""
  for i, s := range l {
  @@ -106,20 +109,35 @@ func main() {
  if strings.Contains(text, "} ") {
  text = strings.Replace(text, ";", "", -1)
  csclass = strings.Replace(text, "} ", "", -1)
  + firstStringField = ""
  break
  }
  }
  write("public struct" + csclass)
  write("{")
  + } else if strings.Contains(s, "typedef enum {") {
  + // look forward for class name
  + for _, text := range l[i:] {
  + if strings.Contains(text, "} ") {
  + text = strings.Replace(text, ";", "", -1)
  + csclass = strings.Replace(text, "} ", "", -1)
  + firstStringField = ""
  + break
  + }
  + }
  + write("public enum" + csclass)
  + write("{")
  } else if len(csclass) != 0 {
  if strings.Contains(s, "} Toggl") {
  csclass = ""
  + if len(firstStringField) > 0 {
  write("")
  write("public override string ToString()")
  write("{")
  write(" return " + firstStringField + ";")
  write("}")
  write("")
  + }
  write("}")
  } else {
  addMarshalInfo(s)
  @@ -138,7 +156,7 @@ func main() {
  w := strings.Split(s, " ")
  t := w[1]
  csfunc = w[len(w)-1]
  - if ("bool" == t) {
  + if "bool" == t {
  write("[return:MarshalAs(UnmanagedType.I1)]")
  }
  write("private static extern " + t + " " + csfunc)
  