func Register(extension string, m MarshalFunc, um UnmarshalFunc) {
	formats[extension] = format{m, um}
}
Register is the way you register configuration formats, by mapping some
file name extension to corresponding marshal and unmarshal functions.
Once registered, the format given would be compatible with Load and Save.
package store
import (
	"bytes"
	"encoding/json"
	"fmt"
	"io/ioutil"
	"os"
	"path/filepath"
	"reflect"
	"runtime"
	"github.com/BurntSushi/toml"
	"gopkg.in/yaml.v2"
)
type MarshalFunc func(v interface{}) ([]byte, error)
type UnmarshalFunc func(data []byte, v interface{}) error
var (
	applicationName = ""
	formats         = map[string]format{}
)
type format struct {
	m  MarshalFunc
	um UnmarshalFunc
}
func init() {
	formats["json"] = format{m: json.Marshal, um: json.Unmarshal}
	formats["yaml"] = format{m: yaml.Marshal, um: yaml.Unmarshal}
	formats["yml"] = format{m: yaml.Marshal, um: yaml.Unmarshal}
	formats["toml"] = format{
		m: func(v interface{}) ([]byte, error) {
			b := bytes.Buffer{}
			err := toml.NewEncoder(&b).Encode(v)
			return b.Bytes(), err
		},
		um: toml.Unmarshal,
	}
}
func Init(application string) {
	applicationName = application
}