return statements rather than holding a registry

currently, "prepare" is a bit funky

1) it keeps an internal dictionary of statements where the name must be unique - this could be a problem if you load statements across your application

2) it doesn't provide for a way to "prepare" a statement that is not in a file

3) it's misleading -- all it is doing a is loading a file and compiling templates.  nothing is prepared until the first time it is run.

What I'm thinking of is something more like this:

```js
//
// directory /sql has files "foo.sql" and "foo_tpl.sql.hbs"
//

db.loadStatements(__dirname + '/sql')
.then( function(statements) {
  db.exec(statements.foo);
  db.execTemplate(statements.fooTpl, {...});
})

db.execTemplate(statements.foo, {..});
```

A statement is just something like this:
```js
{
  name: 'globally unique name',
  sql: 'SELECT...'
}

// or 
{
  name: 'globally unique name',
  template: 'SELECT {{table}} ...'
}


```

The "name" is optional.  The statement will be prepared if it is included.

the statement objects returned when loading files also include the file path for informational/debugging purposes.