Fix memory leak in BIO_free if there is no destroy function.
Based on an original patch by Neitrino Photonov <neitrinoph@gmail.com>

PR#3439
Add cscope and ctags files to .gitignore

These files are generated by the cscope and Exuberant Ctags tools as described
in:

http://wiki.openssl.org/index.php/Testing_and_Development_Tools_and_Tips
Emit PERLASM_SCHEME to fix GitMake on OS X

This fixes the errors when trying to assemble .s files using GitMake on OS X.
{,darwin64-}debug-test-64-clang Configure targets

These are based on debug-ben-debug-64-clang and is intended to produce
consistent settings for folks involved in the unit testing effort detailed at:

http://wiki.openssl.org/index.php/Unit_Testing

-fsanitize has been removed from the set of clang flags for now. Apparently
clang 3.1, which ships with FreeBSD 9.1, completely ignores -fsanitize. Clang
3.3, which ships with FreeBSD 9.2, compiles with it, but fails to link due to
the absence of libasan:

http://lists.freebsd.org/pipermail/freebsd-hackers/2013-December/043995.html
https://www.mail-archive.com/cfe-commits@cs.uiuc.edu/msg92260.html
http://reviews.llvm.org/D2644

We need -Wno-error=unused-const-variable because of this error:
.../crypto/ec/ec_lib.c:74:19: error: unused variable 'EC_version' [-Werror,-Wunused-const-variable]
static const char EC_version[] = "EC" OPENSSL_VERSION_PTEXT;
Remove short-circuit to allow GitMake test to pass

Removing this code allowed GitMake to successfully build and run all the
tests. It was previously breaking because only the first '@' line of test_bn
and other test rules was updated with 'cd $(TEST_D)'.
Improve variable parsing when generating MINFO

Before this change, variables for which a '=' appeared in the assignment would
be parsed as the entire string up until the final '='. For example:

  BUILD_CMD=shlib_target=; if [ -n "$(SHARED_LIBS)" ]; then \

would result in the variable name "BUILD_CMD=shlib_target". This doesn't
appear to harm the current generation of MINFO, but creates problems for other
Makefile-related work I'm attempting.
Remove redundant test targets outside of test/

These correspond to targets of the same name in test/Makefile that clash when
using the single-makefile build method using GitConfigure and GitMake.
Ignore dependency makefiles
Add missing SRC variable

This is the only Makefile without SRC defined. This change enables a
standard Makefile include directive to cover crypto/jpake/*.d files.
Add whrlpool and camellia .s files to perlasm list
Add .d files to 'make clean' targets
crypto: cversion.c depends on buildinf.h
Configure dependency-generating compiler flags

This is in anticipation of removing support for makedepend, as per:

http://marc.info/?t=140420825100001&r=1&w=2
https://groups.google.com/forum/#!topic/mailing.openssl.dev/m9XDCpmzWAg
Fix CC in FIPS_BUILD_CMD and FIPS_CRYPTO_BUILD_CMD

This should have been $(CC) all along; removing $(BUILDENV) from the
make invocation causes ${{CC}} to be empty, triggering a build failure as
LDCMD (in Makefile.shared) receives no value.
Fix mk1mf.pl rule generation for asm files

Before this change, the mk1mf.pl script only emitted incorrect rules for a
number of asm files, due to a combination of incomplete/incorrect pattern
matching (in the foreach block at line 1200 in the original) and missing
fix_asm() calls in 'copy' mode (line 909 in the original).

In the original, rules were emitted for files which appeared in the
lower-level Makefile variable definitions, regardless of the values defined in
the top-level Makefile. Now rules are emitted only for the top-level Makefile
values.

fix_asm() also now correctly handles the case where the asm variable is empty,
rather than causing a failure.

I noticed the problem during the course of my build system refactoring
experiments, while examining the makefile generated by GitConfigure in a clean
branch against one generated in my experimental branch. I used the same method
to verify that this change works as expected.
Create process_makefile() function

This preserves existing behavior, but anticipates the addition of a
configure.mk.org file that will contain common build variables that will be
included in GNU- and BSD-specific Makefiles. Consequently, this code will be
updated again to accommodate configure.mk once it appears.
Extract import_top_level_vars() function

This preserves existing behavior, and is in preparation for importing
variables from a top-level configure.mk file as well.
Generate configure.mk during Configure

configure.mk.org contains the build variables shared betweeen GNU- and
BSD-specific Makefiles that are set by Configure. Many are defined according
to the value of BUILDENV in Makefile.org.
Process configure.mk for top-level 'make files'

Placing configure.mk first ensures that its values are processed first. At
this stage in the Makefile refactoring experiment, the differences in
the resulting MINFO file are all at the top-level, and a result of the fact
that configure.mk defines all of the following variables as they appear in the
existing BUILDENV variable:

- ASFLAG ends in '-c'.
- FIPS_EX_OBJ is expanded as part of BUILDENV, BUILD_CMD, BUILD_ONE_CMD and
  RECURSIVE_BUILD_CMD.
- LIBRPATH and MAKEOVERRIDES are defined.
Parse configure.mk and use it to replace BUILDENV

The only differences in the resulting output are due to the expansions
explained in the earlier 'make files' commit.