I cannot seem to get a remote query to use POST properly.
var creditors = new Bloodhound({
    datumTokenizer: function (d) {
        return Bloodhound.token         
        
You can use the prepare property with remote or prefetch, mind that the function signature changes.
An example with prefetch:
var Bloodhound = new Bloodhound({
                datumTokenizer: Bloodhound.tokenizers.whitespace,
                queryTokenizer: Bloodhound.tokenizers.whitespace,
                prefetch: {
                    url: remote,
                    prepare: function (settings) {
                        settings.type = "POST";
                        settings.contentType = "application/json; charset=UTF-8";
                        return settings;
                    },
                    remote: function (query, settings) {
                        settings.type = "POST";
                        settings.data = {q: query, foo: 'bar'}; // you can pass some data if you need to
                        return settings;
                    }
                }
            });
Remember that with remote the function signature changes with function(query, settings).
For reference: github.com/twitter/typeahead.js/issues/1236