merge merkle tree

- adding  PR for comments
Best to use a full name here PPSPP_DEFAULT_HASH_ALGORITHM or similar, and move into https://github.com/skunkwerks/swirl/blob/master/include/ppspp.hrl#L45 or nearby. IIRC this is defined in the spec so that makes sense. 
I have a local branch with algorithms expressed as types, while it's not finished I can at least merge in the include files to help with this. I'm not sure if these should go in a separate `ppspp_types.hrl` as they are at the moment, or somewhere else. Thoughts?

```
%% -*- tab-width: 4;erlang-indent-level: 4;indent-tabs-mode: nil -*-
%% ex: ft=erlang ts=4 sw=4 et
%% Licensed under the Apache License, Version 2.0 (the "License"); you may not
%% use this file except in compliance with the License. You may obtain a copy of
%% the License at
%%
%%   http://www.apache.org/licenses/LICENSE-2.0
%%
%% Unless required by applicable law or agreed to in writing, software
%% distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
%% WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
%% License for the specific language governing permissions and limitations under
%% the License.

-include("swirl.hrl").
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% common types

-type protocol_option() ::
    current_version |
    minimum_version |
    swarm_id_length |
    content_integrity_check_method |
    merkle_hash_tree_function |
    live_signature_algorithm |
    chunk_addressing_method |
    live_discard_window |
    supported_messages |
    end_option.

-type datagram_field() :: channel_size | unknown_channel.

-type message_type() :: 
    handshake |
    data |
    ack |
    have |
    integrity |
    pex_resv4 |
    pex_req |
    signed_integrity |
    request |
    cancel |
    choke |
    unchoke |
    pex_resv6 |
    pex_rescert.

-type merkle_tree_hash_function() ::
    sha1 |
    sha-224 |
    sha-256 |
    sha-384 |
    sha-512.

-type content_integrity_protection_method() ::
    none |
    merkle_hash_tree |
    sign_all |
    unified_merkle_tree.

-type chunk_addressing_method() ::
    chunk_32bit_bins |
    chunk_64bit_bytes |
    chunk_32bit_chunks |
    chunk_64bit_bins |
    chunk_64bit_chunks.
```