[lib] remove duplicated code in rsa.c

    - remove duplicated code
    - better code style
Merge pull request #698 from Chilledheart/remove_duplcated_code

[lib] remove duplicated code in rsa.c
[server] correct usage of g_strndup

  - g_strndup will always allocate a n+1 bytes string, and terminate it by NULL.
  - there is no need for manually doing this.
  - see more at glib's source (glib/gstrfuncs.c)
  - see more at glib's document
    https://developer.gnome.org/glib/2.28/glib-String-Utility-Functions.html
Merge pull request #703 from Chilledheart/correct_usage_of_g_strndup

[server] correct usage of g_strndup
Add CMake Build System
test: Add the missing argument for read_index_from
Skip deprecated g_type_init() for GLib 2.36
httpserver: bm->size >= 0 is always true

    In struct _BMetadata, size is unsigned.
    No need to check if bm->size >= 0
Silence compiler warning

   silence the warning of uninitialized head_id in putcommit-v2-proc.c
   silence the warning of implicit declaration of g_open in test-seafile-fmt.c
   silence the warning of implicit declaration of g_stat in test-cdc.c
   silence the warning of uninitialized e in merge-recursive.c
[TODO]update test_write_chunk to support new version of WriteblockFunc
Eliminate goto in compute_repo_size of size-sched.c
Eliminate bad whitespaces in task.vala
Replace gnome-terminal with bash in test scripts
[lib] better byte ordering detection

     - originally inspired by redis (src/config.h) and
       llvm (include/llvm/Support/Host.h)
     - BSDs detection inspired by this platform detection manual
       http://nadeausoftware.com/articles/2012/01/c_c_tip_how_use_compiler_predefined_macros_detect_operating_system#BSD
     - Apple's OSX and iOS is based on a fork of FreeBSD, including
       machine/endian.h as what we do to other BSDs should be enough.
[server] Add cache support for repo