jinterface: fix finding cookie file on windows

Jinterface uses System.getProperty("user.home") to locate the user's home
and the cookie file. On Windows, the result might be different than the
value used by Erlang, which looks first to the HOMEDRIVE and HOMEPATH
variables.

The fix makes jinterface use the same logic.
Test that list_dir("non-existing-dir") fails with the correct error
Tweak (make) silent rules support
Remove upgrade code not needed after application restart

Which will be the case with R16B in this case.
Simplify transport shutdown

Service process informs the watchdog process which informs the peer
process. (Instead of going directly to the latter in one case.)
Simplify watchdog transitions in service process

In particular, use watchdog messages as input and do away with the older
connection_up/down (and other) messages. Also, only maintain the
watchdog state, not the older up/down op state.
Add testcases to traffic suite

That check for unexpected entries in the request table.
Rename records peer/conn -> watchdog/peer in diameter_service

That is, make the naming match that of the corresponding modules.
This has long been fairly confusing.
Comment fixes
Fix faulty watchdog transition DOWN -> INITIAL

This was the result of the watchdog process exiting as a consequence of
peer death in some casesi, causing a restarted transport to enter
INITIAL when it should enter REOPEN. The watchdog now remains alive as
long as peer shutdown isn't requested and a 'close' message to the
service process (instead of watchdog death) generates 'closed' events
from the service.
Fix faulty watchdog transition INITIAL -> DOWN

There is no such transition in RFC 3539, the state remains in INITIAL.
Fix testcases in event suite

The transition INITIAL -> DOWN (fixed in the preceding commit) was
wrong.
Add RFC 6733 dictionaries

The RFC 6733 accounting dictionary includes rfc6733 in its name. The RFC
3588 dictionary doesn't and is left as-is for backwards compatibility.
Don't hardcode common dictionary

Instead, use whatever dictionary a transport has configured as
supporting application id 0. This is to support the updated RFC 6733
dictionaries (which bring with them updated records) and also to be able
to transparently support any changed semantics (eg. 5xxx in
answer-message).
Document the existence of the RFC 6733 dictionaries
Add exprecs '#get-'/1 for transforming records into lists

The generated '#get-'/1 has one clause for each exported record r, whose
definition is equivalent to the following.

  '#get-'(#r{} = Rec) ->
      [r | lists:zip(record_info(r, fields), tl(tuple_to_list(Rec)))];

The record name at the head of the list is the same format that diameter
accepts for outgoing message.
Add exprecs '#new-'/1 clause taking list argument

As an inverse to '#get-'/1 in the preceding commit.
Update capx suite to test both RFC 3588 and 6733 dictionaries
Update traffic suite to test both RFC 3588 and 6733 dictionaries
Move failover out of service process

In order to be able to remove fields from the request process that don't
need to be there and do less in the service process. The pick_peer
callback now takes place in the request process in the case of immutable
state, just as in the case of the initial send.