feat(server): define config schema using convict

Closes #3
sorry, actually it's fine. if you look, it does `.filter(fs.existsSync)`. worst case, that means node looks for a file named "undefined", doesn't find it, discards it.